gets_s
, _getws_s
Ottiene una riga dal flusso stdin
. Queste versioni di hanno _getws
miglioramenti pergets
la sicurezza, come descritto in Funzionalità di sicurezza in CRT.
Sintassi
char *gets_s(
char *buffer,
size_t sizeInCharacters
);
wchar_t *_getws_s(
wchar_t *buffer,
size_t sizeInCharacters
);
template <size_t size>
char *gets_s( char (&buffer)[size] ); // C++ only
template <size_t size>
wchar_t *_getws_s( wchar_t (&buffer)[size] ); // C++ only
Parametri
buffer
Percorso di archiviazione per la stringa di input.
sizeInCharacters
Dimensione del buffer.
Valore restituito
Se l'esito è positivo, restituisce buffer
. Un puntatore NULL
indica una condizione di errore o di fine file. Usare ferror
o feof
per determinare quale si è verificato.
Osservazioni:
La funzione gets_s
legge una riga dal flusso di input standard stdin
e la archivia in buffer
. La riga è costituita da tutti i caratteri fino al primo carattere di nuova riga (''\n
). gets_s
sostituisce quindi il carattere di nuova riga con un carattere Null (''\0
) prima di restituire la riga. Al contrario, la funzione fgets_s
mantiene il carattere di nuova riga.
Se il primo carattere letto è il carattere di fine del file, viene archiviato un carattere Null all'inizio di buffer
e NULL
viene restituito .
_getws_s
è una versione a caratteri wide di gets_s
il cui argomento e il cui valore restituito sono stringhe di caratteri wide.
Se buffer
è o sizeInCharacters
è NULL
minore o uguale a zero o se il buffer è troppo piccolo per contenere la riga di input e il carattere di terminazione 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 ERANGE
.
In C++ l'utilizzo di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente (eliminando la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le 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
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_getts_s |
gets_s |
gets_s |
_getws_s |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
gets_s |
<stdio.h> |
_getws_s |
<stdio.h> oppure <wchar.h> |
La console non è supportata nelle app piattaforma UWP (Universal Windows Platform) (UWP). Gli handle di flusso standard associati alla console, stdin
, stdout
e stderr
devono essere reindirizzati prima che le funzioni di runtime C possano usarle nelle app UWP. Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// crt_gets_s.c
// This program retrieves a string from the stdin and
// prints the same string to the console.
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets_s( line, 20 );
printf( "The line entered was: %s\n", line );
}
Hello there!
The line entered was: Hello there!
Vedi anche
I/O di flusso
gets
, _getws
fgets
, fgetws
fputs
, fputws
puts
, _putws