gets_s, _getws_s
Ottenere una linea dallo stream stdin. Queste versioni di gets, _getws contengono miglioramenti sulla sicurezza, come descritto in Funzionalità di sicurezza in CRT.
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
[out] buffer
Percorso di archiviazione per la stringa di input.[in] sizeInCharacters
Dimensione del buffer.
Valore restituito
Se ha esito positivo restituisce buffer. Un puntatore a NULL indica un errore o una condizione di fine file. Utilizzare ferror o feof per determinare quale si è verificato.
Note
La funzione gets_s 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_s quindi sostituisce il carattere di nuova riga con un carattere null ('\0') prima di restituirla. Al contrario, la funzione fgets_s mantiene il carattere di nuova riga.
Se il primo carattere letto è il carattere di fine file, un carattere null viene archiviato nella parte superiore buffer e viene restituito NULL.
_getws è una versione a caratteri di tipo "wide" di gets_s; il relativo argomento e valore restituito sono stringhe di caratteri di tipo "wide".
Se buffer è NULL o sizeInCharacters è minore o uguale a zero oppure se il buffer è troppo piccolo per contenere la linea e il carattere di terminazione null, queste funzioni richiamano un gestore del parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono NULL e impostano errno a ERANGE.
In C++, l'utilizzo di queste funzioni è semplificato dagli overload dei modelli; gli overload possono dedurre la lunghezza del buffer automaticamente (che elimina la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti, quelle non sicure alle più recenti e le controparti sicure. 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_s |
gets_s |
_getws |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
gets_s |
<stdio.h> |
_getws |
<stdio.h> o <wchar.h> |
La console non è supportata nelle applicazioni Windows Store. Gli handle del flusso standard associati alla console,stdin, stdout e stderr, devono essere reindirizzati prima di poter utilizzare le funzioni di runtime del linguaggio C nelle applicazioni Windows Store. Per ulteriori informazioni sulla compatibilità, vedere 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 );
}