_cgets
, _cgetws
Ottiene una stringa di caratteri dalla console. Sono disponibili versioni più sicure di queste funzioni; vedere _cgets_s
, _cgetws_s
.
Importante
Queste funzioni sono obsolete. A partire da Visual Studio 2015 non sono disponibili in CRT. Le versioni sicure di queste funzioni, _cgets_s e _cgetws_s, sono ancora disponibili. Per informazioni su queste funzioni alternative, vedere _cgets_s
, _cgetws_s
.
Importante
Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
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
Parametri
buffer
Percorso di archiviazione per i dati.
Valore restituito
_cgets
e _cgetws
restituiscono un puntatore all'inizio della stringa, in corrispondenza di buffer[2]
. Se buffer
è NULL
, queste funzioni richiamano il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, restituiscono NULL
e impostano errno
su EINVAL
.
Osservazioni:
Queste funzioni leggono una stringa di caratteri dalla console e archiviano la stringa e la relativa lunghezza nella posizione indicata da buffer
. Il parametro buffer
deve essere un puntatore a una matrice di caratteri. Il primo elemento della matrice, buffer[0]
, deve contenere la lunghezza massima in caratteri della stringa da leggere. La matrice deve contenere elementi sufficienti per contenere la stringa, un carattere Null di terminazione ('\0') e 2 byte aggiuntivi. La funzione legge i caratteri finché non viene letta una combinazione di ritorno a capo con avanzamento riga (CR-LF) oppure il numero specificato di caratteri. La stringa viene archiviata a partire da buffer[2]
. Se la funzione legge una combinazione CR-LF, archivia il carattere Null ('\0'). La funzione archivia quindi la lunghezza effettiva della stringa nel secondo elemento della matrice, buffer[1]
.
Dal momento che tutti i tasti di modifica sono attivi quando si chiama _cgets
o _cgetws
in una finestra di console, premendo F3 viene ripetuta l'ultima voce immessa.
In C++ queste funzioni presentano overload di modello che richiamano le relative controparti più recenti e sicure. Per altre informazioni, vedere Proteggere gli overload dei modelli.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Routine Tchar.h | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_cgetts |
_cgets |
_cgets |
_cgetws |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_cgets |
<conio.h> |
_cgetws |
<conio.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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.