Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Obtém uma linha do stdin fluxo. Estão disponíveis versões mais seguras destas funções; ver gets_s, _getws_s.
Importante
Estas funções estão obsoletas. A partir do Visual Studio 2015, eles 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, consulte gets_s, _getws_s.
Importante
Essa API não pode ser usada em aplicativos executados no Tempo de Execução do Windows. Para obter mais informações, consulte Funções CRT não suportadas 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 cadeia de caracteres de entrada.
Valor de retorno
Retorna seu argumento se for bem-sucedido. Um NULL ponteiro indica um erro ou uma condição de fim de arquivo. Use ferror ou feof para determinar qual ocorreu. Se buffer for NULL, essas funções invocam um manipulador de parâmetros inválido, conforme descrito em Validação de parâmetros. Se a execução for permitida para continuar, essas funções retornarão NULL e serão definidas errno como EINVAL.
Observações
A gets função lê uma linha do fluxo stdin de entrada padrão e armazena-a em buffer. A linha consiste em todos os caracteres até e incluindo o primeiro caractere de nova linha ('\n').
gets em seguida, substitui o caractere newline por um caractere nulo ('\0') antes de retornar a linha. Em contraste, a fgets função mantém o caractere de nova linha.
_getws é uma versão de caracteres largos de ; seu argumento e valor de retorno são cadeias de getscaracteres largos.
Importante
Como não há como limitar o número de caracteres lidos pelo gets, a entrada não confiável pode facilmente causar saturações de buffer. Utilize fgets em substituição.
Em C++, essas funções têm sobrecargas de modelo que invocam as contrapartes mais recentes e seguras dessas funções. Para obter mais informações, consulte Sobrecargas de modelo seguro.
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
| TCHAR. Rotina H |
_UNICODE e _MBCS não definido |
_MBCS definido |
_UNICODE definido |
|---|---|---|---|
_getts |
gets |
gets |
_getws |
Requerimentos
| Rotina | Cabeçalho obrigatório |
|---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> ou <wchar.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade.
Example
// 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 );
}
A entrada com mais de 20 caracteres irá invadir o buffer de linha e quase certamente causar a falha do programa.
Hello there!The line entered was: Hello there!