_cgets, _cgetws
Ottiene una stringa di caratteri dalla console. Sono disponibili versioni più sicure di queste funzioni; vedere _cgets_s, _cgetws_s.
Importante
Questa API non può essere utilizzata nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /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
Parametri
- buffer
Percorso di archiviazione per i dati.
Valore restituito
_cgets e _cgetws restituiscono un puntatore all'inizio della stringa, a buffer[2]. Se il buffer è NULL, queste funzioni richiamano il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono NULL e impostano errno su EINVAL.
Note
Queste funzioni leggono una stringa di caratteri dalla console e archiviano la stringa e la sua lunghezza nella posizione puntata da buffer. Il parametro buffer deve essere un puntatore a un array di caratteri. Il primo elemento dell'array, buffer[0], deve contenere la lunghezza massima (in caratteri) della stringa da leggere. L'array deve contenere elementi sufficienti per contenere la stringa, un carattere di terminazione null ("\0") e 2 byte aggiuntivi. La funzione legge caratteri fino a una combinazione di ritorno a capo-avanzamento riga (CR-LF) o viene letto il numero specificato di caratteri. La stringa viene archiviata iniziando a buffer[2]. Se la funzione legge un CR-LF, memorizza il carattere null ("\0"). La funzione quindi archivia l'attuale lunghezza della stringa nel secondo elemento della matrice, buffer[1].
Poiché tutti i tasti di modifica sono attivi quando vengono chiamati _cgets o_cgetws mentre in una finestra di console, premendo il tasto F3 si ripete l'ultima voce inserita.
In C++, queste funzioni presentano overload dei modelli che richiamano le relative controparti sicure e più recenti. Per ulteriori informazioni, vedere Overload di modelli sicuri.
Mapping di routine su testo generico
Routine Tchar.h |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_cgetts |
_cgets |
_cgets |
_cgetws |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_cgets |
<conio.h> |
_cgetws |
<conio.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere 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 );
}
}