_cgets, _cgetws
Pobiera ciąg znaków z konsoli.Bardziej bezpieczne wersje tych funkcji są dostępne w _cgets_s, _cgetws_s.
![]() |
---|
Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /ZW. |
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 magazynowa danych.
Wartość zwracana
_cgets i _cgetws zwracają wskaźnik do początku ciągu, w buffer[2].Jeśli buffer ma wartość NULL, te funkcje wywołują procedurę obsługi nieprawidłowego parametru, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, zwracają one NULL i ustawiają errno jako EINVAL.
Uwagi
Te funkcje odczytują ciąg znaków z konsoli i przechowują ciąg i jego długość w lokalizacji wskazywanej do buffer.buffer parametr musi być wskaźnikiem do tablicy znaków.Pierwszy element tablicy, buffer[0], musi zawierać maksymalną długość (w znakach) ciągu do odczytu.Tablica musi zawierać tyle elementów, aby pomieścić ciąg, kończący się znakiem null (\0) i 2 bajty dodatkowe.Funkcja odczytuje znaki do momentu return–line kombinacji (CR-LF) lub przeczytania określonej liczby znaków.Ciąg jest przechowywany, zaczynając od buffer[2].Jeśli funkcja odczytuje CR-LF, przechowuje znak null („\0”).Funkcja następnie przechowuje rzeczywistą długość ciągu drugiego elementu tablicy, buffer[1].
Ponieważ wszystkie klawisze edycji są aktywne, kiedy _cgets lub_cgetws jest wywoływana w oknie konsoli, naciskanie klawisza F3 powtarza ostatni wprowadzony wpis.
W języku programowania C++ funkcje te mają przeciążenia szablonu, które wywołują nowsze, bezpieczne odpowiedniki tych funkcji.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE i _MBCS nie zdefiniowany |
_MBCS zdefiniowano |
_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 na temat 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 );
}
}