Condividi tramite


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 );
}
  

Equivalente .NET Framework

System::Console::Read

Vedere anche

Riferimenti

I/O di flusso

gets, _getws

fgets, fgetws

fputs, fputws

puts, _putws