gets, _getws
Ottiene una linea dallo stream stdin. Sono disponibili versioni più sicure di queste funzioni; vedere gets_s, _getws_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 *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 ha esito positivo. Un puntatore a NULL indica un errore o una condizione di fine file. Utilizzare ferror o feof per determinare quale si è verificato. Se il buffer è NULL, queste funzioni richiamano un gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono NULL e impostano errno a EINVAL.
Note
La funzione gets legge una riga dal flusso di input predefinito stdin e lo memorizzata in buffer. La riga è costituita da tutti i caratteri fino al primo carattere di nuova riga ('\n') incluso. gets quindi sostituisce il carattere di nuova riga con un carattere null ('\0') prima di restituirla. Al contrario, la funzione fgets mantiene il carattere di nuova riga. _getws è una versione a caratteri di tipo "wide" di gets; il relativo argomento e valore restituito sono stringhe di caratteri di tipo "wide".
Nota sulla sicurezza |
---|
Poiché non è possibile limitare il numero di caratteri da leggere tramite la gets, un input non attendibile può facilmente causare dei sovraccarichi del buffer.In alternativa, utilizzare fgets. |
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 & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere 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 );
}
Si noti che input lunghi più di 20 caratteri sovraccaricheranno il buffer della riga e quasi certamente causeranno l'arresto anomalo del programma.