Udostępnij za pośrednictwem


_cgets, _cgetws

Pobiera ciąg znaków z konsoli programu . Dostępne są bezpieczniejsze wersje tych funkcji; zobacz _cgets_s, _cgetws_s.

Ważne

Te funkcje są przestarzałe. Począwszy od programu Visual Studio 2015, nie są one dostępne w CRT. Bezpieczne wersje tych funkcji, _cgets_s i _cgetws_s, są nadal dostępne. Aby uzyskać informacje na temat tych funkcji alternatywnych, zobacz _cgets_s, _cgetws_s.

Ważne

Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

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
Lokalizacja przechowywania danych.

Wartość zwracana

_cgets i _cgetws zwróć wskaźnik na początek ciągu o buffer[2]wartości . Jeśli buffer to NULL, te funkcje wywołują nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, zwracają NULL i ustawiają wartość EINVALerrno .

Uwagi

Te funkcje odczytują ciąg znaków z konsoli i przechowują ciąg i jego długość w lokalizacji wskazywanej przez buffer. Parametr buffer musi być wskaźnikiem do tablicy znaków. Pierwszy element tablicy buffer[0]musi zawierać maksymalną długość (w znakach) ciągu do odczytania. Tablica musi zawierać wystarczającą ilość elementów do przechowywania ciągu, znak zerowy zakończenia (\0) i 2 dodatkowe bajty. Funkcja odczytuje znaki do momentu odczytania kombinacji zwrotnego wiersza karetki (CR-LF) lub określonej liczby znaków. Ciąg jest przechowywany od buffer[2]. Jeśli funkcja odczytuje cr-LF, przechowuje znak null ('\0'). Następnie funkcja przechowuje rzeczywistą długość ciągu w drugim elemecie tablicy . buffer[1]

Ponieważ wszystkie klucze edycji są aktywne, gdy _cgets lub _cgetws jest wywoływana w oknie konsoli, naciśnięcie F3 powtarza ostatni wprowadzony wpis.

W języku C++te funkcje mają przeciążenia szablonu, które wywołują nowsze, bezpieczne odpowiedniki tych funkcji. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

Procedura tchar.h _UNICODE i _MBCS niezdefiniowane _MBCS zdefiniowany _UNICODE zdefiniowany
_cgetts _cgets _cgets _cgetws

Wymagania

Procedura Wymagany nagłówek
_cgets <conio.h>
_cgetws <conio.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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.

Zobacz też

We/Wy konsoli i portu
_getch, _getwch