gets, _getws

Obtém uma linha do fluxo stdin. Versões mais seguras dessas funções estão disponíveis; confira gets_s, _getws_s.

Importante

Essas funções estão obsoletas. A partir do Visual Studio 2015, elas não estão disponíveis no CRT. As versões seguras dessas funções, gets_s e _getws_s, ainda estão disponíveis. Para obter informações sobre essas funções alternativas, confira gets_s, _getws_s.

Importante

Esta API não pode ser usada em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.

Sintaxe

char *gets(
   char *buffer
);
wchar_t *_getws(
   wchar_t *buffer
);
template <size_t size>
char *gets(
   char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
   wchar_t (&buffer)[size]
); // C++ only

Parâmetros

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

Retornar valor

Retorna o argumento se for bem-sucedido. Um ponteiro NULL indica uma condição de erro ou de final do arquivo. Use ferror oufeof para determinar qual das condições ocorreu. Se buffer for NULL, essas funções invocam um manipulador de parâmetros 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 para EINVAL.

Comentários

A função gets 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, 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 retém o caractere de nova linha. _getws é uma versão de caractere largo de gets; seu argumento e o valor retornado são cadeias de caracteres largos.

Importante

Como não há uma forma de limitar o número de caracteres lidos por gets, entradas não confiáveis podem facilmente causar saturações de buffer. Use o fgets em vez disso.

No C++, essas funções têm sobrecargas de modelo que invocam os equivalentes mais novos e seguros dessas funções. 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, consulte Estado global na CRT.

Mapeamentos de rotina de texto genérico

Rotina TCHAR.H _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_getts gets gets _getws

Requisitos

Rotina Cabeçalho necessário
gets <stdio.h>
_getws <stdio.h> ou <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// crt_gets.c
// compile with: /WX /W3

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets( line );  // C4996
   // Danger: No way to limit input to 20 chars.
   // Consider using gets_s instead.
   printf( "The line entered was: %s\n", line );
}

Entrada com mais de 20 caracteres irá ultrapassar o buffer de linha e quase certamente causar o programa para falhar.


Hello there!The line entered was: Hello there!

Confira também

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