Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Biçimlendirilmiş verileri bir dizeden okur. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. vsscanf_s, vswscanf_s.
Sözdizimi
int vsscanf(
const char *buffer,
const char *format,
va_list arglist
);
int vswscanf(
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 EINVALayarlanırerrno.
Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.
Açıklamalar
işlevi, vsscanf bağımsız değişken listesindeki her bağımsız değişken tarafından verilen konumlardaki arglist verileri buffer okur. Listedeki her bağımsız değişken, içindeki bir tür tanımlayıcısına formatkarşılık gelen bir türe sahip bir değişkenin işaretçisi olmalıdır. 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 sahiptir. Kopyalama çakışan dizeler arasında gerçekleşirse, davranış tanımlanmamıştır.
Önemli
Bir dizeyi okumak için kullandığınızdavsscanf, her zaman %s biçimi için bir genişlik belirtin (örneğin, "%s" yerine "%32s"), aksi takdirde yanlış biçimlendirilmiş giriş arabellek taşmasına neden olabilir.
vswscanf , öğesinin vsscanfgeniş karakterli bir sürümüdür; için bağımsız değişkenler vswscanf geniş karakterli dizelerdir. vsscanf çok baytlı onaltılık karakterleri işlemez. vswscanf Unicode tam genişlikli onaltılık veya "uyumluluk bölgesi" karakterlerini işlemez. Aksi takdirde ve vswscanf vsscanf aynı şekilde davran.
Genel metin yordamı eşlemeleri
| TCHAR.H yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
|---|---|---|---|
_vstscanf |
vsscanf |
vsscanf |
vswscanf |
Gereksinimler
| Yordam | Gerekli başlık |
|---|---|
vsscanf |
<stdio.h> |
vswscanf |
<stdio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_vsscanf.c
// compile with: /W3
// This program uses vsscanf to read data items
// from a string named tokenstring, then displays them.
#include <stdio.h>
#include <stdarg.h>
int call_vsscanf(char *tokenstring, char *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vsscanf(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(tokenstring, "%80s", s);
call_vsscanf(tokenstring, "%c", &c);
call_vsscanf(tokenstring, "%d", &i);
call_vsscanf(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
sprintf, _sprintf_l, swprintf, _swprintf_l, , __swprintf_l
vsscanf_s, vswscanf_s