_cscanf_s
, , _cscanf_s_l
, , _cwscanf_s
_cwscanf_s_l
Odczytuje sformatowane dane z konsoli programu . Te bezpieczniejsze wersje programu _cscanf
, , _cwscanf
_cwscanf_l
_cscanf_l
mają ulepszenia zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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 kontroli 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 zostały odczytane, ale nie zostały przypisane. Wartość zwracana jest EOF
dla próby odczytania na końcu pliku. Element EOF
może być również zwracany, gdy dane wejściowe klawiatury są przekierowywane na poziomie wiersza polecenia systemu operacyjnego. Zwracana wartość zero oznacza, że żadne pola nie zostały przypisane.
Te funkcje weryfikują swoje parametry. Jeśli format
jest wskaźnikiem o wartości null, te funkcje wywołują nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, te funkcje zwracają EOF
wartość i errno
jest ustawiona na EINVAL
wartość .
Uwagi
Funkcja _cscanf_s
odczytuje dane bezpośrednio z konsoli do lokalizacji podanych przez argument
program . Funkcja _getche
służy do odczytywania znaków. Każdy opcjonalny parametr musi być wskaźnikiem do zmiennej o typie odpowiadającym specyfikatorowi typu w programie format
. Format steruje interpretacją pól wejściowych i ma taką samą formę i funkcję jak format
parametr funkcji scanf_s
. Zwykle _cscanf_s
powtarza znak wejściowy, ale nie robi tego, jeśli ostatnie wywołanie miało wartość _ungetch
.
Podobnie jak inne bezpieczne wersje funkcji w scanf
rodzinie _cscanf_s
i _cwscanf_s
wymagają argumentów rozmiaru dla znaków pól typu c, C, s, S i [. Aby uzyskać więcej informacji, zobacz scanf Width Specification (Specyfikacja szerokości scanf).
Uwaga
Parametr rozmiaru jest typu unsigned
, a nie size_t
.
Wersje tych funkcji z sufiksem _l
są identyczne, z tą różnicą, że używają parametru ustawień regionalnych przekazanych zamiast bieżących ustawień regionalnych wątku.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_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 o zgodności, zobacz Zgodność.
Biblioteki
Wszystkie wersje bibliotek czasu wykonywania języka 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" );
}
1 2 3
You entered 1 2 3
Zobacz też
We/Wy konsoli i portu
_cprintf
, , _cprintf_l
, , _cwprintf
_cwprintf_l
fscanf_s
, , _fscanf_s_l
, , fwscanf_s
_fwscanf_s_l
scanf_s
, , _scanf_s_l
, , wscanf_s
_wscanf_s_l
sscanf_s
, , _sscanf_s_l
, , swscanf_s
_swscanf_s_l