gets, _getws
Obtém uma linha do fluxo de stdin. Versões mais seguras dessas funções estão disponíveis; consulte gets_s, _getws_s.
Importante
Esta API não pode ser usada em aplicativos que executam no Tempo de Execução do Windows.Para obter mais informações, consulte Funções CRT sem suporte pelo /ZW.
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 de uma cadeia de caracteres de entrada.
Valor de retorno
Retorna o seu argumento se tiver êxito. Um ponteiro de NULL 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 chamarão um manipulador de parâmetro inválido, como descrito em Validação do parâmetro. Se a execução puder continuar, essas funções retornarão NULL e definirão errno como 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 substitui o caractere de nova linha por um caractere nulo (“\0") antes de retornar a linha. Por outro lado, a função de fgets retém o caractere de nova linha. _getws é uma versão caracteres largos de gets; seu argumento e valor de retorno são cadeias de caracteres de largos.
Observação de segurança |
---|
Como não há uma maneira de limitar o número de caracteres obtidos pela leitura, a entrada não confiável pode facilmente causar saturações de buffer.Use fgets em vez disso. |
No C++, essas funções têm as sobrecargas de modelo que invocam as correspondentes seguras mais recentes dessas funções. Para obter mais informações, consulte Sobrecargas de modelo seguras.
Mapeamentos da rotina de texto genérico
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> ou <wchar.h> |
Para informações adicionais de 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 );
}
Observe que a entrada maior que 20 caracteres passará o buffer de linha e certamente fará o programar falhar.