Sdílet prostřednictvím


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á poznámkaDů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í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.

  

Ekvivalent v rozhraní .NET Framework

System::Console::Read

Viz také

Referenční dokumentace

I/O proudu

fgets, fgetws

fputs, fputws

puts, _putws