_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ść EINVAL
errno
.
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.