gets, _getws

Get a line from the stdin stream. More secure versions of these functions are available; see gets_s, _getws_s.

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

Параметры

  • buffer
    Storage location for input string.

Возвращаемое значение

Returns its argument if successful. A NULL pointer indicates an error or end-of-file condition. Use ferror or feof to determine which one has occurred. If buffer is NULL, these functions invoke an invalid parameter handler, as described in Parameter Validation. If execution is allowed to continue, these functions return NULL and set errno to EINVAL.

Заметки

The gets function reads a line from the standard input stream stdin and stores it in buffer. The line consists of all characters up to and including the first newline character ('\n'). gets then replaces the newline character with a null character ('\0') before returning the line. In contrast, the fgets function retains the newline character. _getws is a wide-character version of gets; its argument and return value are wide-character strings.

Примечание о безопасностиПримечание о безопасности.

Because there is no way to limit the number of characters read by gets, untrusted input can easily cause buffer overruns. Use fgets instead.

In C++, these functions have template overloads that invoke the newer, secure counterparts of these functions. For more information, see Secure Template Overloads.

Generic-Text Routine Mappings

TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_getts

gets

gets

_getws

Требования

Routine

Required header

gets

<stdio.h>

_getws

<stdio.h> or <wchar.h>

For additional compatibility information, see Compatibility in the Introduction.

Пример

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

Note that input longer than 20 characters will overrun the line buffer and almost certainly cause the program to crash.

Hello there!

The line entered was: Hello there!

Эквивалент в .NET Framework

System::Console::Read

См. также

Основные понятия

Stream I/O

fgets, fgetws

fputs, fputws

puts, _putws