vscanf
, vwscanf
Standart giriş akışından biçimlendirilmiş verileri okur. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. vscanf_s
, vwscanf_s
.
Sözdizimi
int vscanf(
const char *format,
va_list arglist
);
int vwscanf(
const wchar_t *format,
va_list arglist
);
Parametreler
format
Denetim dizesini biçimlendir.
arglist
Değişken bağımsız değişken listesi.
Dönüş değeri
Başarıyla dönüştürülen ve atanan alanların 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.
bir işaretçiyseformat
, parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır.NULL
Yürütmenin devam etmesi için izin verilirse, bu işlevler döndürülerek EOF
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
İşlev, vscanf
standart giriş akışındaki stdin
verileri okur ve bağımsız değişken listesi tarafından arglist
verilen konumlara yazar. Listedeki her bağımsız değişken, içindeki bir tür tanımlayıcısına format
karşılık gelen bir tür değişkeninin işaretçisi olmalıdır. Çakışan dizeler arasında kopyalama olursa davranış tanımsızdır.
Önemli
Bir dizeyi okumak için kullandığınızdavscanf
, 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. Alternatif olarak, veya vwscanf_s
fgets
kullanabilirsiniz.vscanf_s
vwscanf
, öğesinin vscanf
geniş karakterli bir sürümüdür; format
bağımsız değişkeni vwscanf
geniş karakterli bir dizedir. vwscanf
ve vscanf
akış ANSI modunda açıldığında aynı şekilde davranır. vscanf
UNICODE akışından gelen girişi desteklemez.
Genel metin yordamı eşlemeleri
TCHAR.H yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_vtscanf |
vscanf |
vscanf |
vwscanf |
Daha fazla bilgi için bkz . Belirtim alanlarını biçimlendirme: scanf
ve wscanf
işlevleri.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
vscanf |
<stdio.h> |
vwscanf |
<stdio.h> veya <wchar.h> |
Konsol Evrensel Windows Platformu (UWP) uygulamalarında desteklenmez. C çalışma zamanı işlevlerinin UWP uygulamalarında kullanabilmesi için önce konsolu stdin
, , stdout
ve stderr
ile ilişkilendirilmiş standart akış tanıtıcılarının yeniden yönlendirilmesi gerekir. Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_vscanf.c
// compile with: /W3
// This program uses the vscanf and vwscanf functions
// to read formatted input.
#include <stdio.h>
#include <stdarg.h>
int call_vscanf(char *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vscanf(format, arglist);
va_end(arglist);
return result;
}
int call_vwscanf(wchar_t *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vwscanf(format, arglist);
va_end(arglist);
return result;
}
int main( void )
{
int i, result;
float fp;
char c, s[81];
wchar_t wc, ws[81];
result = call_vscanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws );
printf( "The number of fields input is %d\n", result );
printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
result = call_vwscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws );
wprintf( L"The number of fields input is %d\n", result );
wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
71 98.6 h z Byte characters
36 92.3 y n Wide charactersThe number of fields input is 6
The contents are: 71 98.599998 h z Byte characters
The number of fields input is 6
The contents are: 36 92.300003 y n Wide characters
Ayrıca bkz.
Matematik ve kayan nokta desteği
Akış G/Ç
Yerel ayar
fscanf
, _fscanf_l
, fwscanf
, _fwscanf_l
printf
, _printf_l
, wprintf
, _wprintf_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, , __swprintf_l
sscanf
, _sscanf_l
, swscanf
, _swscanf_l
vscanf_s
, vwscanf_s