_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
Přečte formátovaná data z konzoly.Tyto bezpečnější verze _cscanf, _cscanf_l, _cwscanf, _cwscanf_l mají rozšíření zabezpečení popsaná v tématu Funkce zabezpečení v CRT.
Důležité |
---|
Toto API nelze použít v aplikacích, které jsou spuštěny v modulu Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW. |
int _cscanf_s(
const char *format [,
argument] ...
);
int _cscanf_s_l(
const char *format,
locale_t locale [,
argument] ...
);
int _cwscanf_s(
const wchar_t *format [,
argument] ...
);
int _cwscanf_s_l(
const wchar_t *format,
locale_t locale [,
argument] ...
);
Parametry
format
Řetězec řízení formátu.argument
Volitelné parametry.locale
Použité národní prostředí.
Vrácená hodnota
Počet polí, které byly úspěšně převedeny a přiřazeny.Návratová hodnota nezahrnuje pole, které bylo přečteno, ale nepřiřazeno.Návratová hodnota je EOF pro pokus o čtení na konci souboru.Tato situace může nastat, když je vstup z klávesnice přesměrován na úrovni příkazového řádku operačního systému.Vrácená hodnota 0 znamená, že nebyla přiřazena žádná pole.
Tyto funkce ověřují své parametry.Pokud format je ukazatel s hodnotou null, tyto funkce vyvolají obslužnou rutinu neplatného parametru, jak je popsáno v Ověření parametru.Pokud provádění může pokračovat, vrátí tyto funkce EOF a errnose nastaví na EINVAL.
Poznámky
Funkce _cscanf_s načte data přímo z konzoly do míst daných argumentem argument.Funkce _getche se používá ke čtení znaků.Každý volitelný parametr musí ukazovat na proměnnou s typem, který odpovídá specifikátoru typů ve format.Formát řídí interpretaci vstupních polí a má stejnou formu a funkci jako parametr format funkce scanf_s.Zatímco _cscanf_s obvykle vrátí vstupní znak, neučiní tak, pokud poslední volání bylo _ungetch.
Podobně jako jiné bezpečné verze funkcí v rodině scanf,_cscanf_s a _cswscanf_s vyžadují argumenty velikosti pro znaky pole typu c, C, s, S a [.Další informace naleznete v tématu Specifikace šířky scanf.
[!POZNÁMKA]
Velikost parametru je typu unsigned, nikoli size_t.
Verze těchto funkcí s příponou _l jsou stejné s tím rozdílem, že používají parametr předané národní prostředí namísto aktuálního národní prostředí pro vlákno.
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE a _MBCS nejsou definovány |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tcscanf_s |
_cscanf_s |
_cscanf_s |
_cwscanf_s |
_tcscanf_s_l |
_cscanf_s_l |
_cscanf_s_l |
_cwscanf_s_l |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_cscanf_s,_cscanf_s_l |
<conio.h> |
_cwscanf_s, _cwscanf_s_l |
<conio.h> nebo <wchar.h> |
Další informace o kompatibilitě naleznete v tématu Kompatibilita.
Knihovny
Všechny verze běhových knihoven C.
Příklad
// crt_cscanf_s.c
// compile with: /c
/* This program prompts for a string
* and uses _cscanf_s to read in the response.
* Then _cscanf_s returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, n[3];
int i;
result = _cscanf_s( "%i %i %i", &n[0], &n[1], &n[2] );
_cprintf_s( "\r\nYou entered " );
for( i=0; i<result; i++ )
_cprintf_s( "%i ", n[i] );
_cprintf_s( "\r\n" );
}
Vstup
1 2 3
Výsledek
You entered 1 2 3
Viz také
Referenční dokumentace
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l