Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 10:57   #1
Geolaz
Новичок
Джуниор
 
Аватар для Geolaz
 
Регистрация: 14.01.2010
Сообщений: 2
По умолчанию Как задать EOF?

Доброго времени суток.
Я только начал изучать С по книге Кернигана и Ритчи и там в примерах довольно часто встречается конструкция:
Цитата:
while ((c = getchar()) != EOF)
проблема в том, что цикл получается бесконечным, т.к. я не понимаю как дать программе понять, что наступил этот самый end of file.
P. S. Программы консольные, исходные данные задаются с клавиатуры.
Geolaz вне форума Ответить с цитированием
Старый 14.01.2010, 11:13   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Обычно EOF конец файла, когда вы достигли его конца считываю посимвольно или построчно. Теоретически - проверка на особый символ конца файла.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 14.01.2010, 18:06   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Geolaz Посмотреть сообщение
Доброго времени суток.
Я только начал изучать С по книге Кернигана и Ритчи и там в примерах довольно часто встречается конструкция:

проблема в том, что цикл получается бесконечным, т.к. я не понимаю как дать программе понять, что наступил этот самый end of file.
P. S. Программы консольные, исходные данные задаются с клавиатуры.
В консоли CTRL + Z и Enter )
netrino вне форума Ответить с цитированием
Старый 15.01.2010, 00:20   #4
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

конечно, идти против атвора языка сурово, но по - моему можно и другие циклы организовать без eof
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 16.01.2010, 07:50   #5
Geolaz
Новичок
Джуниор
 
Аватар для Geolaz
 
Регистрация: 14.01.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от RoS Посмотреть сообщение
конечно, идти против атвора языка сурово, но по - моему можно и другие циклы организовать без eof
тем и занимаюсь
а Ctrl+Z не помогло.
Geolaz вне форума Ответить с цитированием
Старый 16.01.2010, 09:00   #6
Yaqro
 
Регистрация: 14.01.2010
Сообщений: 6
По умолчанию

Должно помочь. Надо, чтобы ^Z + Enter были первыми в строке, т.е. набираешь, например, так: 1<Enter> 2<Enter> 3<Enter> ^Z<Enter>
Yaqro вне форума Ответить с цитированием
Старый 16.01.2010, 18:17   #7
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Нафига вам использовать EOF? Используйте свою букву/цифру/символ для окончания работы программы.
MaTBeu вне форума Ответить с цитированием
Старый 16.01.2010, 19:44   #8
SAURONoff
 
Аватар для SAURONoff
 
Регистрация: 16.01.2010
Сообщений: 6
По умолчанию

какое совпадение) как раз на этом стопорнулся)))
Код:
#include <stdio.h>
#include <stdlib.h>
main()
{
char a;
while((a=getchar()) != 1)
putchar(a);
  return 0;
}
не реагирует на 1, не выходит из цикла. wtf? =)

Последний раз редактировалось MaTBeu; 17.01.2010 в 13:44.
SAURONoff вне форума Ответить с цитированием
Старый 16.01.2010, 19:57   #9
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Вместо
Код:
while((a=getchar()) != 1)
напиши
Код:
while((a=getchar()) != '1')
profi вне форума Ответить с цитированием
Старый 16.01.2010, 20:20   #10
SAURONoff
 
Аватар для SAURONoff
 
Регистрация: 16.01.2010
Сообщений: 6
По умолчанию

спасибо=)
кстати, в учебнике рекомендуется
Код:
#define eof 1
...
while((a=getchar()) != eof)
но прокатило тоже только с #define eof '1'
вторая лажа в учебнике, и это только начало... видать, это способ обучения такой))
SAURONoff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как задать рекурсией? Irdis Фриланс 4 11.02.2010 02:01
Подскажите как работает eof()[Console C++] sawer5 Помощь студентам 3 01.01.2010 12:11
Как задать треугольник? Shevali Помощь студентам 4 07.04.2009 01:01
Как задать множество 1234 Паскаль, Turbo Pascal, PascalABC.NET 7 25.05.2008 16:15