Aracılığıyla paylaş


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 EINVALayarlanırerrno.

Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _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 formatkarşı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_sfgetskullanabilirsiniz.vscanf_s

vwscanf , öğesinin vscanfgeniş 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, , stdoutve stderrile 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