Udostępnij za pośrednictwem


_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.

Ważna uwagaWażne

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

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l