Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Условие !=EOF, что надо сделать чтобы оно было истинным

26K
15 мая 2007 года
lodyr
10 / / 12.05.2007
есть маленькая программа из книжки, внутри цикла условие, что нужно сделать, чтобы выйти из цикла и программа напечатала бы значение nc. Спасибо.

 
Код:
#include <stdio.h>

void main ()
{
    int nc;
    while ((getchar())!=EOF)   
        ++nc;
    printf("%d", nc);
}
209
15 мая 2007 года
~ArchimeD~
1.4K / / 24.07.2006
EOF - это End Of File. Поэтому юзать этот макрос надо при чтении файла, чего я у тебя не заметил. К тому же у тебя не определено значение nc, а ты его инкрементируешь. Напиши
int nc=0;
Если ты хочешь получить с клавиатуры значение, по которому можно из цикла выйти, то и впиши то, что с клавиатуры ввести можно. Например
while ((getchar())!='e')
Должно выполняться, пока не брякнешь на e
26K
15 мая 2007 года
lodyr
10 / / 12.05.2007
~ArchimeD~
спасибо за разъяснения
Почему же в книжке приводятся эти примеры, которые работают неправильно?
По поводу, любого символа с клавиатуры я догадался, было непонимание по поповоду EOF. Спасибо:)
209
15 мая 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Я так думаю че-то вроде какого-нибудь наброска... Типа как работает цикл. Или, че получится, если перенаправить ввод. А че за книжица то?
282
15 мая 2007 года
m_Valery
1.0K / / 08.01.2007
 
Код:
...
int nc;
...

Так вообще не рекомендуется делать,есть такое правило "Всегда инициализируйте переменные".См.например Г.Саттер А.Александреску "Стандарты программирования на С++",правило 19.А
в твоем коде - тем более...
Цитата:
Неинициализированные перемнные - распространенный источник ошибок в программах на С и С++.Избегайте их выработав привычку очищать память перед ее использованием , инициализируйте переменные при их определении.


Код:
// Не рекомендуется - не инициализирует переменную
int speedFactor;
if(condition)
  speedFactor = 2;
else
  speedFactor = -1;
// Лучше:инициализирует переменную
int speedFactor = -1;
if(condition)
  speedFactor = 2;
// Еще лучше
int speedFactor = condition ? 2 : 1;

Лучшие варианты не имеют промежутка между определением и инициализацией.
26K
16 мая 2007 года
lodyr
10 / / 12.05.2007
[QUOTE=~ArchimeD~]А че за книжица то?[/QUOTE]
Керниган, Ритчи "Язык программирования Си"

m_Valery
спасибо большое за совет, все понял
96K
19 января 2016 года
Allerwaid Graber
1 / / 19.01.2016
Что бы значение было истиным нужно нажать ctrl+d linux и ctrl+z windows https://ru.wikipedia.org/wiki/EOF
Сочетание этих клавиш в проверке дает требуемый результат.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог