_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
Odczyty sformatowanych danych z konsoli.Te bardziej bezpieczne wersje _cscanf, _cscanf_l, _cwscanf, _cwscanf_l mają wzmocnienia zabezpieczeń, jak opisano w Funkcje zabezpieczeń w CRT.
![]() |
---|
Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /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
Ciąg formantu formatu.argument
Parametry opcjonalne.locale
Ustawienia regionalne do użycia.
Wartość zwracana
Liczba pól, które zostały pomyślnie przekonwertowane i przypisane.Wartość zwracana nie zawiera pól, które były odczytane, ale nie są przypisane.Wartość zwracana jest EOF dla próba odczytu na końcu pliku.To może wystąpić, gdy dane wejściowe z klawiatury są przekierowywane na poziomie wiersza poleceń systemu operacyjnego.Zwracana wartość wynosząca 0 oznacza, że nie przydzielono żadnych pól.
Te funkcje sprawdzają poprawność swoich parametrów.Jeśli format jest pustym wskaźnikiem, funkcje te wywołają procedurę obsługi nieprawidłowego parametru, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, te funkcje zwracają EOF, a errnojest ustawione jako EINVAL.
Uwagi
Funkcja _cscanf_s odczytuje dane bezpośrednio z konsoli w miejscach podanych przez argument._Getche funkcja jest używana do odczytu znaków.Każdy parametr opcjonalny musi być wskaźnikiem do zmiennej typu odpowiadającego specyfikatorowi typu w parametrze format.Format kontroluje interpretację pól wejściowych i ma taką samą formę i zadanie, co parametr format dla funkcji scanf_s.Podczas gdy _cscanf_s zwykle odzwierciedla znak wejścia, tak się nie dzieje w sytuacji, gdy ostatnie wywołanie było do _ungetch.
Podobnie jak inne bezpieczne wersje funkcji w rodziniescanf,_cscanf_s i _cswscanf_s wymagają argumentów rozmiaru dla znaków pola typu c, C, s, S oraz [.Aby uzyskać więcej informacji, zobacz scanf — Specyfikacje szerokości.
[!UWAGA]
Parametr rozmiaru ma typ unsigned, nie size_t.
Wersje tych funkcji z przyrostkiem _l są identyczne z wyjątkiem stosowania regionalnych parametrów zamiast bieżącego ciągu.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE i _MBCS nie zdefiniowany |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_tcscanf_s |
_cscanf_s |
_cscanf_s |
_cwscanf_s |
_tcscanf_s_l |
_cscanf_s_l |
_cscanf_s_l |
_cwscanf_s_l |
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_cscanf_s,_cscanf_s_l |
<conio.h> |
_cwscanf_s, _cwscanf_s_l |
<conio.h> lub <wchar.h> |
Aby uzyskać więcej informacji na temat zgodności – zobacz: Zgodność.
Biblioteki
Wszystkie wersje Bibliotek uruchomieniowych C.
Przykład
// 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" );
}
Dane wejściowe
1 2 3
Dane wyjściowe
You entered 1 2 3
Zobacz też
Informacje
Operacje We/Wy konsoli i portu
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l