gets
, _getws
Získá čáru z datového stdin
proudu. K dispozici jsou bezpečnější verze těchto funkcí; viz gets_s
, _getws_s
.
Důležité
Tyto funkce jsou zastaralé. Počínaje sadou Visual Studio 2015 nejsou v CRT k dispozici. Zabezpečené verze těchto funkcí gets_s
a _getws_s
jsou stále k dispozici. Informace o těchto alternativních funkcích naleznete v tématu gets_s
, _getws_s
.
Důležité
Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
char *gets(
char *buffer
);
wchar_t *_getws(
wchar_t *buffer
);
template <size_t size>
char *gets(
char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
wchar_t (&buffer)[size]
); // C++ only
Parametry
buffer
Umístění úložiště pro vstupní řetězec
Vrácená hodnota
Vrátí argument 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. Pokud buffer
ano NULL
, tyto funkce vyvolávají neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud provádění může pokračovat, tyto funkce se vrátí NULL
a nastaví errno
na EINVAL
.
Poznámky
Funkce gets
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
před vrácením řádku nahradí znak nového řádku znakem null (\0). Naproti tomu funkce fgets
zachová znak nového řádku. _getws
je verze širokého znaku gets
; její argument a návratová hodnota jsou řetězce širokých znaků.
Důležité
Vzhledem k tomu, že neexistuje způsob, jak omezit počet přečtených gets
znaků , nedůvěryhodný vstup může snadno způsobit přetečení vyrovnávací paměti. Místo toho použijte fgets
.
V jazyce C++ mají tyto funkce přetížení šablon, které vyvolávají novější zabezpečené protějšky těchto funkcí. 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
Rutina TCHAR.H | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_gets.c
// compile with: /WX /W3
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets( line ); // C4996
// Danger: No way to limit input to 20 chars.
// Consider using gets_s instead.
printf( "The line entered was: %s\n", line );
}
Vstup delší než 20 znaků přeteče vyrovnávací paměť řádku a téměř jistě způsobí chybové ukončení programu.
Hello there!The line entered was: Hello there!
Viz také
Vstupně-výstupní operace streamu
fgets
, fgetws
fputs
, fputws
puts
, _putws