gets_s, _getws_s

Ottiene una riga dal flusso stdin . Queste versioni di hanno _getwsmiglioramenti 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 buffere 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, stdoute stderrdevono 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