gets_s
, _getws_s
Získá čáru z datového stdin
proudu. Tyto verze gets
mají _getws
vylepšení zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Syntaxe
char *gets_s(
char *buffer,
size_t sizeInCharacters
);
wchar_t *_getws_s(
wchar_t *buffer,
size_t sizeInCharacters
);
template <size_t size>
char *gets_s( char (&buffer)[size] ); // C++ only
template <size_t size>
wchar_t *_getws_s( wchar_t (&buffer)[size] ); // C++ only
Parametry
buffer
Umístění úložiště pro vstupní řetězec
sizeInCharacters
Velikost vyrovnávací paměti.
Vrácená hodnota
Vrátí buffer
v případě úspěchu. NULL
Ukazatel označuje chybu nebo podmínku ukončení souboru. Použijte ferror
nebo feof
určete, ke kterému došlo.
Poznámky
Funkce gets_s
načte řádek ze standardního vstupního datového proudu stdin
a uloží ho do buffer
. Řádek se skládá ze všech znaků až do prvního znaku nového řádku (''\n
). gets_s
před vrácením řádku nahradí znak nového řádku znakem null ('\0
' ). Naproti tomu funkce fgets_s
zachová znak nového řádku.
Pokud je první znak čtení znakem konce souboru, je znak null uložen na začátku buffer
znaku a NULL
je vrácen.
_getws_s
je verze širokého znaku gets_s
; její argument a návratová hodnota jsou řetězce širokých znaků.
Pokud buffer
je NULL
nebo je menší nebo sizeInCharacters
rovna nule, nebo pokud je vyrovnávací paměť příliš malá, aby obsahovala vstupní řádek a ukončovací znak null, tyto funkce vyvolat neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tyto funkce vrátí NULL
a nastaví předčítání na ERANGE
.
V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou automaticky odvodit délku vyrovnávací paměti (eliminuje potřebu zadat argument velikosti) a mohou automaticky nahradit starší, nezabezpečené funkce jejich novějšími zabezpečenými protějšky. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
TCHAR.H rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_getts_s |
gets_s |
gets_s |
_getws_s |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
gets_s |
<stdio.h> |
_getws_s |
<stdio.h> nebo <wchar.h> |
Konzola není podporována v aplikacích pro Univerzální platforma Windows (UPW). Standardní zpracování datových proudů, které jsou přidružené ke konzole , a , stderr
musí být přesměrovány před tím, stdin
stdout
než je funkce runtime jazyka C mohou používat v aplikacích pro UPW. Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_gets_s.c
// This program retrieves a string from the stdin and
// prints the same string to the console.
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets_s( line, 20 );
printf( "The line entered was: %s\n", line );
}
Hello there!
The line entered was: Hello there!
Viz také
Vstupně-výstupní operace streamu
gets
, _getws
fgets
, fgetws
fputs
, fputws
puts
, _putws