Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод строки с клавиатуры - scanf или gets? 
:(
    Опции темы
Markus
Дата 5.10.2004, 20:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1) Можно ли scanf-ом считать строку до нажатия клавиши Enter, а не до первого пробела?
2) Почему у меня в некоторых случаях пропускается функция gets()? Связано ли это каким-нибудь образом с тем, что до этого я считываю функцией getch() нажатие клавиш стрелок?
  Вверх
VID
Дата 11.10.2004, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.10.2004
Где: Новосибирск

Репутация: нет
Всего: нет



По 1) му вопросу - scanf предназначена не для считывания строк неизвестной длины, а для считывания конкретных типов. Для считывания строки думаю мона подругому сделать, например, в можно считывать каждый введенный символ и последовательно добавлять его в строку типа AnsiString (для Delphi или Builder'a), если это не управляющий символ. Если введен Enter, то следует вызывать какую-то функцию в которую в качестве параметра передавать указатель на строку, а лучше ссылку со спецификатором const. Можно привести и код, но это если есть необходимость... smile.gif
PM MAIL   Вверх
chaos
Дата 11.10.2004, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



попробуй cin >> str;
PM WWW   Вверх
bel_nikita
Дата 11.10.2004, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



gets() - знатные дядьки, типа Г. Шилдта, рекомендуют не пользоваться ентой функцией. smile.gif
вот, такая конструкция еще есть
Код
  int z;
   if(kbhit())
 {
  z=getch();
  //cprintf("\r\nKey=%d",z);
  switch (z)
  {
     case  27:// Esc
     break;
     case  '1': // 1
     break;
  }



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.