#include <stdio.h>
void main ()
{
int nc;
while ((getchar())!=EOF)
++nc;
printf("%d", nc);
}
Условие !=EOF, что надо сделать чтобы оно было истинным
Код:
int nc=0;
Если ты хочешь получить с клавиатуры значение, по которому можно из цикла выйти, то и впиши то, что с клавиатуры ввести можно. Например
while ((getchar())!='e')
Должно выполняться, пока не брякнешь на e
спасибо за разъяснения
Почему же в книжке приводятся эти примеры, которые работают неправильно?
По поводу, любого символа с клавиатуры я догадался, было непонимание по поповоду EOF. Спасибо:)
Я так думаю че-то вроде какого-нибудь наброска... Типа как работает цикл. Или, че получится, если перенаправить ввод. А че за книжица то?
Код:
...
int nc;
...
int nc;
...
Так вообще не рекомендуется делать,есть такое правило "Всегда инициализируйте переменные".См.например Г.Саттер А.Александреску "Стандарты программирования на С++",правило 19.А
в твоем коде - тем более...
Цитата:
Неинициализированные перемнные - распространенный источник ошибок в программах на С и С++.Избегайте их выработав привычку очищать память перед ее использованием , инициализируйте переменные при их определении.
Код:
// Не рекомендуется - не инициализирует переменную
int speedFactor;
if(condition)
speedFactor = 2;
else
speedFactor = -1;
// Лучше:инициализирует переменную
int speedFactor = -1;
if(condition)
speedFactor = 2;
// Еще лучше
int speedFactor = condition ? 2 : 1;
int speedFactor;
if(condition)
speedFactor = 2;
else
speedFactor = -1;
// Лучше:инициализирует переменную
int speedFactor = -1;
if(condition)
speedFactor = 2;
// Еще лучше
int speedFactor = condition ? 2 : 1;
Лучшие варианты не имеют промежутка между определением и инициализацией.
Керниган, Ритчи "Язык программирования Си"
m_Valery
спасибо большое за совет, все понял
https://ru.wikipedia.org/wiki/EOF
Сочетание этих клавиш в проверке дает требуемый результат.
Что бы значение было истиным нужно нажать ctrl+d linux и ctrl+z windows
Сочетание этих клавиш в проверке дает требуемый результат.