gets, _getws
Získat řádek z stdin proudu.Bezpečnější verze tyto funkce jsou k dispozici; see gets_s _getws_s.
Důležité |
---|
Toto rozhraní API nelze použít v aplikacích, které jsou spuštěny v systému 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
Vrátí argument v případě úspěchu.A NULL ukazatel myši označuje podmínku chyby nebo konce souboru.Použití ferror nebo feof Chcete-li zjistit, který z nich došlo.Pokud buffer je NULL, tyto funkce vyvolat obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametrů.Pokud je povoleno zpracování, chcete-li pokračovat, tyto funkce vracejí NULL a kód chyby EINVAL.
Poznámky
gets Funkce přečte řádek ze standardní vstupní proud stdin a uloží jej v buffer.Řádek obsahuje všechny znaky až po a včetně první znak nového řádku (\n).getspak nahradí znak nového řádku znak null ('\0') před vrácením řádku.Oproti tomu fgets funkce si uchovává znak nového řádku._getwsje verzí širokého znaku gets; jeho argument a vrácené hodnoty jsou řetězci širokého znaku.
Poznámka k zabezpečení |
---|
Protože neexistuje žádný způsob, jak omezit počet znaků, které jsou přečteny získá, nedůvěryhodné vstupní může snadno způsobit chyby přetečení vyrovnávací paměti.Jako náhradu použijte fgets. |
V jazyce C++ mají tyto funkce šablony přetížení, které vyvolávají novější, bezpečné protějšky těchto funkcí.Další informace naleznete v tématu Přetížení šablony zabezpečení.
Mapování rutiny obecného textu
TCHAR.Byla zahájena rutina h |
_UNICODE & _MBCS není definováno |
_MBCS, definice |
_UNICODE definována |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Požadavky
Byla zahájena rutina |
Požadované záhlaví |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
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ů bude řádkové vyrovnávací paměti přetečení a téměř jistě dojít k selhání programu.