Udostępnij za pośrednictwem


_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_lmają 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ą EOFwartość i errno jest ustawiona na EINVALwartość .

Uwagi

Funkcja _cscanf_s odczytuje dane bezpośrednio z konsoli do lokalizacji podanych przez argumentprogram . 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 Zdefiniowane _UNICODE Zdefiniowane
_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