Получает строку из потока байтов stdin.
char *gets( char *buffer ); wchar_t *_getws( wchar_t *buffer ); |
Резервирует место для вводимой строки.
Возвращает свой параметр в случае успешного завершения. Пустой указатель обозначает условие метки конца файла или ошибку. Используйте функцию ferror или feof, чтобы решить, что имело место.
Функция gets читает строку из стандартного потока ввода данных stdin и хранит её в буфере. Строка состоит из всех символов от и до и включает в себя первый символ новой строки ('\n'). Затем функция заменяет символ новой строки нулевым (пустым) символом ('\0') перед тем, как возвратить строку. Напротив, функция fgets сохраняет символ новой строки. _getws - широкосимвольная версия функции gets; её параметры и возвращаемое значение - широкосимвольные строки.
Замечание по безопасности. Поскольку нет никакого способа ограничить число символов, прочитанных функцией gets, неподтвержденные вводимые данные могут легко вызвать переполнение буфера. Используйте функцию fgets вместо функции gets. |
Стандартный TCHAR.H |
_UNICODE & _MBCS не определен |
_MBCS определен |
_UNICODE определен |
---|---|---|---|
_getts | gets | gets | _getws |
Потоковые процедуры ввода - вывода (I/O) | fgets | fputs | puts | Процедуры периода выполнения программы и эквиваленты .NET Framework
Процедура |
Требуется заголовочный файл |
Совместимость |
---|---|---|
gets | <stdio.h> | ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
_getws | <stdio.h> or <wchar.h> | ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
Дополнительную информацию о совместимости, см. в статье Совместимость во Вводной части.
Все версии библиотек программ этапа выполнения языка C.
// crt_gets.c #include <stdio.h> int main( void ) { char line[21]; // участок памяти для 20 символов + '\0' gets( line ); // Опасно: Нет способа ограничить ввод данных до 20 символов. // Гораздо предпочтительнее: fgets( line, 21, stdin ); // но вы должны будете исключить перемещение '\n' printf( "The line entered was: %s\n", line ); }
|
Обратите внимание! на то, что вводимые данные больше чем 20 символов переполняет буфер строки и почти наверняка заставит программу прийти к фатальному сбою. |