Condividi tramite


gets, _getws

Ottiene una riga dal flusso stdin . Sono disponibili versioni più sicure di queste funzioni; vedere gets_s, _getws_s.

Importante

Queste funzioni sono obsolete. A partire da Visual Studio 2015 non sono disponibili in CRT. Le versioni sicure di queste funzioni gets_s e _getws_s, sono ancora disponibili. Per informazioni su queste funzioni alternative, vedere gets_s, _getws_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 *gets(
   char *buffer
);
wchar_t *_getws(
   wchar_t *buffer
);
template <size_t size>
char *gets(
   char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
   wchar_t (&buffer)[size]
); // C++ only

Parametri

buffer
Percorso di archiviazione per la stringa di input.

Valore restituito

Restituisce il relativo argomento se l'operazione ha esito positivo. Un puntatore NULL indica una condizione di errore o di fine file. Usare ferror o feof per determinare quale si è verificato. Se buffer è NULL, queste funzioni richiamano un gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono NULL e impostano errno su EINVAL.

Osservazioni:

La funzione gets legge una riga dal flusso di input standard stdin e la archivia in buffer. La riga è costituita da tutti i caratteri, incluso il primo carattere di nuova riga ('\n'). gets sostituisce quindi il carattere di nuova riga con un carattere Null ('\0') prima di restituire la riga. Al contrario, la funzione fgets mantiene il carattere di nuova riga. _getws è una versione a caratteri wide di gets il cui argomento e il cui valore restituito sono stringhe di caratteri wide.

Importante

Poiché non è possibile limitare il numero di caratteri letti da gets, l'input non attendibile può causare facilmente sovraccarichi del buffer. Utilizzare invece fgets.

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
_getts gets gets _getws

Requisiti

Ciclo Intestazione obbligatoria
gets <stdio.h>
_getws <stdio.h> oppure <wchar.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

// crt_gets.c
// compile with: /WX /W3

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets( line );  // C4996
   // Danger: No way to limit input to 20 chars.
   // Consider using gets_s instead.
   printf( "The line entered was: %s\n", line );
}

L'input più lungo di 20 caratteri eseguirà il sovraccarico del buffer di riga e quasi certamente causerà l'arresto anomalo del programma.


Hello there!The line entered was: Hello there!

Vedi anche

I/O di flusso
fgets, fgetws
fputs, fputws
puts, _putws