gets, _getws
Získá řádek z proudu stdin.Bezpečnější verze těchto funkcí jsou k dispozici; viz gets_s, _getws_s.
Důležité |
---|
Toto API nelze použít v aplikacích, které jsou spuštěny v modulu Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW. |
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
V případě úspěchů vrátí svůj argument.Ukazatel NULL označuje podmínku chyby nebo konec souboru.Použijte ferror nebo feof, chcete-li zjistit, ke které došlo.Pokud buffer je NULL, tyto funkce vyvolají neplatnou obslužnou rutinu parametru, jak je popsáno v Ověření parametru.Pokud provádění může pokračovat, vrátí tyto funkce NULL a nastaví errno na EINVAL.
Poznámky
Funkce gets přečte řádek ze standardního vstupního proudu stdin a uloží jej do buffer.Řádek obsahuje všechny znaky až po první znak nového řádku (\n) včetně.gets poté nahradí znak nového znaku znakem null ('\0') před vrácením řádku.Oproti tomu funkce fgets zachová znak nového řádku._getws je širokoznaká verze gets; její argument a návratová hodnota jsou širokoznaké řetězce.
Poznámka k zabezpečení |
---|
Protože neexistuje žádný způsob, jak omezit počet znaků, které jsou přečteny metodou gets, nedůvěryhodný vstup může snadno způsobit přetečení zásobníku.Jako náhradu 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í zabezpečení šablony.
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definováno |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě naleznete 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 );
}
Všimněte si, že vstup delší než 20 znaků přeteče z řádkové vyrovnávací paměti a téměř jistě způsobí pád programu.