Sdílet prostřednictvím


_cgets, _cgetws

Získá řetězec znaků z konzoly. K dispozici jsou bezpečnější verze těchto funkcí; viz _cgets_s, _cgetws_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í, _cgets_s a _cgetws_s, jsou stále dostupné. Informace o těchto alternativních funkcích naleznete v tématu _cgets_s, _cgetws_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 *_cgets(
   char *buffer
);
wchar_t *_cgetws(
   wchar_t *buffer
);
template <size_t size>
char *_cgets(
   char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_cgetws(
   wchar_t (&buffer)[size]
); // C++ only

Parametry

buffer
Umístění úložiště pro data

Vrácená hodnota

_cgets a _cgetws vrátí ukazatel na začátek řetězce na adrese buffer[2]. Pokud buffer ano NULL, tyto funkce vyvolávají neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, vrátí NULL a nastaví errno na EINVAL.

Poznámky

Tyto funkce čtou řetězec znaků z konzoly a uloží řetězec a jeho délku do umístění, na které bufferodkazuje . Parametr buffer musí být ukazatel na pole znaků. První prvek pole , buffer[0]musí obsahovat maximální délku (v znaky) řetězce, který má být přečten. Pole musí obsahovat dostatek prvků pro uložení řetězce, ukončující znak null (\0) a 2 nadbytečné bajty. Funkce čte znaky, dokud se nepřečte kombinace návratového řádku řádku (CR-LF) nebo zadaného počtu znaků. Řetězec je uložen od buffer[2]. Pokud funkce přečte CR-LF, uloží znak null (\0). Funkce pak uloží skutečnou délku řetězce ve druhém prvku pole, buffer[1].

Protože jsou všechny klávesy pro úpravy aktivní, když _cgets nebo _cgetws je volána v okně konzoly, stisknutí klávesy F3 opakuje poslední zadaná položka.

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 Definovány _UNICODE Definovány
_cgetts _cgets _cgets _cgetws

Požadavky

Rutina Požadovaný hlavičkový soubor
_cgets <conio.h>
_cgetws <conio.h> nebo <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// crt_cgets.c
// compile with: /c /W3
// This program creates a buffer and initializes
// the first byte to the size of the buffer. Next, the
// program accepts an input string using _cgets and displays
// the size and text of that string.

#include <conio.h>
#include <stdio.h>
#include <errno.h>

int main( void )
{
   char buffer[83] = { 80 };  // Maximum characters in 1st byte
   char *result;

   printf( "Input line of text, followed by carriage return:\n");

   // Input a line of text:
   result = _cgets( buffer ); // C4996
   // Note: _cgets is deprecated; consider using _cgets_s
   if (!result)
   {
      printf( "An error occurred reading from the console:"
              " error code %d\n", errno);
   }
   else
   {
      printf( "\nLine length = %d\nText = %s\n",
              buffer[1], result );
   }
}

      A line of input.Input line of text, followed by carriage return:
Line Length = 16
Text = A line of input.

Viz také

Vstupně-výstupní operace konzoly a portu
_getch, _getwch