vsscanf_s
, vswscanf_s
Biçimlendirilmiş verileri bir dizeden okur. 'nin vsscanf
vswscanf
bu sürümleri, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmelerine sahiptir.
Sözdizimi
int vsscanf_s(
const char *buffer,
const char *format,
va_list argptr
);
int vswscanf_s(
const wchar_t *buffer,
const wchar_t *format,
va_list arglist
);
Parametreler
buffer
Depolanan veriler
format
Biçim denetimi dizesi. Daha fazla bilgi için bkz . Belirtim alanlarını biçimlendirme: scanf
ve wscanf
işlevleri.
arglist
Değişken bağımsız değişken listesi.
Dönüş değeri
Bu işlevlerin her biri başarıyla dönüştürülen ve atanan alan sayısını döndürür. Dönüş değeri okunmuş ancak atanmamış alanları içermez. 0 dönüş değeri, hiçbir alanın atanmadığını gösterir. Dönüş değeri EOF
bir hata içindir veya ilk dönüştürmeden önce dizenin sonuna ulaşılırsa.
veya format
bir işaretçiysebuffer
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi NULL
çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler -1 döndürür ve olarak EINVAL
ayarlanırerrno
.
Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
işlevi, vsscanf_s
bağımsız değişken listesindeki her bağımsız değişken tarafından verilen konumlardaki arglist
verileri buffer
okur. Bağımsız değişken listesindeki bağımsız değişkenler, içinde bir tür tanımlayıcısına format
karşılık gelen bir türe sahip değişkenlerin işaretçilerini belirtir. Daha az güvenli sürümden vsscanf
farklı olarak, [] içine alınmış c, C, s, S veya dize denetimi kümelerinin tür alanı karakterlerini kullandığınızda arabellek boyutu parametresi gerekir. Karakter cinsinden arabellek boyutu, gerektiren her arabellek parametresinden hemen sonra başka bir parametre olarak sağlanmalıdır.
Arabellek boyutu, sonlandırıcı null değerini içerir. Bir genişlik belirtimi alanı, içinde okunan belirtecin arabelleğe sığmasını sağlamak için kullanılabilir. Hiçbir genişlik belirtimi alanı kullanılmazsa ve içinde okunan belirteç arabelleğe sığmayacak kadar büyükse, bu arabelleğe hiçbir şey yazmaz.
Daha fazla bilgi için bkz scanf_s
. , _scanf_s_l
, wscanf_s
ve _wscanf_s_l
scanf Tür Alanı Karakterleri.
Not
Boyut parametresi türündedir unsigned
, türünde değildir size_t
.
format
bağımsız değişkeni, giriş alanlarının yorumlanmasını denetler ve işlevin bağımsız değişkeniyle format
aynı biçime ve işleve scanf_s
sahiptir. Çakışan dizeler arasında kopyalama olursa davranış tanımsızdır.
vswscanf_s
, öğesinin vsscanf_s
geniş karakterli bir sürümüdür; için bağımsız değişkenler vswscanf_s
geniş karakterli dizelerdir. vsscanf_s
çok baytlı onaltılık karakterleri işlemez. vswscanf_s
Unicode tam genişlikli onaltılık veya "uyumluluk bölgesi" karakterlerini işlemez. Aksi takdirde ve vswscanf_s
vsscanf_s
aynı şekilde davran.
Genel metin yordamı eşlemeleri
TCHAR.H yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_vstscanf_s |
vsscanf_s |
vsscanf_s |
vswscanf_s |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
vsscanf_s |
<stdio.h> |
vswscanf_s |
<stdio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_vsscanf_s.c
// compile with: /W3
// This program uses vsscanf_s to read data items
// from a string named tokenstring, then displays them.
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
int call_vsscanf_s(char *tokenstring, char *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vsscanf_s(tokenstring, format, arglist);
va_end(arglist);
return result;
}
int main( void )
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
// Input various data from tokenstring:
// max 80 character string:
call_vsscanf_s(tokenstring, "%80s", s, _countof(s));
call_vsscanf_s(tokenstring, "%c", &c, sizeof(char));
call_vsscanf_s(tokenstring, "%d", &i);
call_vsscanf_s(tokenstring, "%f", &fp);
// Output the data read
printf("String = %s\n", s);
printf("Character = %c\n", c);
printf("Integer: = %d\n", i);
printf("Real: = %f\n", fp);
}
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
Ayrıca bkz.
Akış G/Ç
scanf
, _scanf_l
, wscanf
, _wscanf_l
sscanf
, _sscanf_l
, swscanf
, _swscanf_l
sscanf_s
, _sscanf_s_l
, swscanf_s
, _swscanf_s_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, , __swprintf_l
vsscanf
, vswscanf