Sdílet prostřednictvím


vscanf, vwscanf

Čte formátovaná data ze standardního vstupního datového proudu. K dispozici jsou bezpečnější verze těchto funkcí; viz vscanf_s, vwscanf_s.

Syntaxe

int vscanf(
   const char *format,
   va_list arglist
);
int vwscanf(
   const wchar_t *format,
   va_list arglist
);

Parametry

format
Formátovací řetězec ovládacího prvku

arglist
Seznam argumentů proměnných

Vrácená hodnota

Vrátí počet polí, která jsou úspěšně převedena a přiřazena; návratová hodnota neobsahuje pole, která byla přečtená, ale nepřiřazená. Vrácená hodnota 0 označuje, že nebyla přiřazena žádná pole.

Pokud format je NULL ukazatel, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud provádění může pokračovat, tyto funkce se vrátí EOF a nastaví errno na EINVAL.

Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

Poznámky

Funkce vscanf čte data ze standardního vstupního datového proudu stdin a zapisuje data do umístění, která jsou uvedena seznamem arglist argumentů. Každý argument v seznamu musí být ukazatel na proměnnou typu, která odpovídá specifikátoru typu v format. Pokud ke kopírování dojde mezi řetězci, které se překrývají, chování není definováno.

Důležité

vscanf Při čtení řetězce vždy zadejte šířku pro formát %s (například %32s místo %s). Jinak může nesprávně formátovaný vstup způsobit přetečení vyrovnávací paměti. Jako alternativu můžete použít vscanf_s, vwscanf_s nebo fgets.

vwscanfje verze širokého znaku vscanfformat ; argument je vwscanf řetězec širokého znaku. vwscanf a vscanf chovejte se stejně, pokud je datový proud otevřen v režimu ANSI. vscanf nepodporuje vstup z datového proudu UNICODE.

Mapování rutin obecného textu

Rutina TCHAR.H _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_vtscanf vscanf vscanf vwscanf

Další informace naleznete v tématu Pole specifikace formátu: scanf a wscanf funkce.

Požadavky

Rutina Požadovaný hlavičkový soubor
vscanf <stdio.h>
vwscanf <stdio.h> nebo <wchar.h>

Konzola není podporována v aplikacích pro Univerzální platforma Windows (UPW). Standardní zpracování datových proudů, které jsou přidružené ke konzole , a , stderrmusí být přesměrovány před tím, stdinstdoutnež je funkce runtime jazyka C mohou používat v aplikacích pro UPW. Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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

Viz také

Podpora pro matematiku a plovoucí desetinou čárku
Vstupně-výstupní operace streamu
Národní prostředí
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