Функция gets, _getws


Получает строку из потока байтов stdin.

Синтаксис

char *gets( 
   char *buffer 
);
wchar_t *_getws( 
   wchar_t *buffer 
);
 

Параметр

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

Вводимые данные

Hello there!

Выводимые данные

The line entered was: Hello there!

 


 

Обратите внимание! на то, что вводимые данные больше чем 20 символов переполняет буфер строки и почти наверняка заставит программу прийти к фатальному сбою.

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz