Compartilhar via


gets_s, _getws_s

Obtém uma linha do fluxo stdin. Essas versões do , _getwstêm aprimoramentos degets segurança, conforme descrito em Recursos de segurança no CRT.

Sintaxe

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

Parâmetros

buffer
Local de armazenamento para a cadeia de caracteres de entrada.

sizeInCharacters
O tamanho do buffer.

Valor retornado

Retorna buffer se houver êxito. Um ponteiro NULL indica uma condição de erro ou de final do arquivo. Use ferror oufeof para determinar qual das condições ocorreu.

Comentários

A função gets_s lê uma linha do fluxo de entrada padrão stdin e a armazena em buffer. A linha consiste em todos os caracteres até e incluindo o primeiro caractere de nova linha ('\n'). gets_s, então, substitui o caractere de nova linha por um caractere nulo ('\0') antes de retornar a linha. Por sua vez, a função fgets_s retém o caractere de nova linha.

Se o primeiro caractere lido for o caractere de fim de arquivo, um caractere nulo será armazenado no início de buffer, e NULL será retornado.

_getws_s é uma versão de caractere largo de gets_s; seu argumento e o valor retornado são cadeias de caracteres largos.

Se buffer for NULL ou sizeInCharacters for menor ou igual a zero, ou se o buffer for muito pequeno para conter a linha de entrada e o terminador nulo, essas funções invocarão um manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções retornarão NULL e definirão errno como ERANGE.

Em C++, o uso dessas funções é simplificado pelas sobrecargas de modelo; as sobrecargas podem inferir o tamanho do buffer automaticamente (eliminando a necessidade de especificar um argumento de tamanho) e podem substituir automaticamente funções mais antigas e não seguras por suas equivalentes mais recentes e seguras. Para obter mais informações, consulte Sobrecargas de modelo seguras.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Mapeamentos de rotina de texto genérico

Rotina TCHAR.H _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_getts_s gets_s gets_s _getws_s

Requisitos

Rotina Cabeçalho necessário
gets_s <stdio.h>
_getws_s <stdio.h> ou <wchar.h>

Não há suporte para o console em aplicativos UWP (Plataforma Universal do Windows). Os identificadores de fluxo padrão associados ao console, stdin, stdout e stderr, devem ser redirecionados antes que as funções em tempo de execução C possam usá-los em aplicativos UWP. Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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!

Confira também

E/S de fluxo
gets, _getws
fgets, fgetws
fputs, fputws
puts, _putws