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

Ваш аккаунт

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

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

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

Как в Языке си работает функция EOF помогите разобратся

85K
22 декабря 2012 года
Ando89
11 / / 21.12.2012
Помогите кто может
68K
24 декабря 2012 года
V-tas
58 / / 24.12.2012
Эта программа будет выводить счёт введённых с клавиатуры знаков только, если изменить блок while следующим образом:

#include <stdio.h>

/* подсчет вводимых символов; 1-я версия */
main()
{
int nc;
nc = 0;

while (getchar() != EOF)
{
++nc;
printf("%ld\n", nc);
}//без этой скобки в цикл входит только увеличение переменной nc, а функция printf
//выполнится только когда getchar() даст == -1;
}
Вместо EOF можно написать -1 - это одно и то же. Или создать другую константу с таким же значением. Например, #define KONEC_FAYLA -1. EOF - это всего лишь замена для -1, которая понятна как End Of File, т.е. "конец файла". При компиляции любая константа будет заменена на числовое значение, т.е. никакого EOF в файле не будет, но в конце будет стоять -1 в соответствующей кодировке.
413
22 декабря 2012 года
CassandraDied
763 / / 24.05.2012
EOF - это не функция, это макрос. В макросе - константа, равная -1. Обычно именно это значение возвращают функции чтения символов, когда читать уже нечего.
85K
23 декабря 2012 года
Ando89
11 / / 21.12.2012
тогда я не понимаю как работает след. програма помоги если можеш
main()
{
long nc;
nc = 0;

while (getchar() != EOF)
++nc;
printf(“%ld\n”, nc);
}
у меня на экран нечего не выводится не могу понять почему

Инструкция
413
23 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Lel. Счас псевдокодом всё поясню и сам догадаешься, почему не работает так, как нужно:
Цитата:

до тех пор пока хотя бы один введённый символ можно прочесть с консоли
увеличить nc
вывести на консоль nc


Чтобы getchar не смог что-то прочесть с консоли - это надо постараться.

85K
23 декабря 2012 года
Ando89
11 / / 21.12.2012
так я не пойму этот цикл будет работать вечно что ли потому что если я правильно вас понял еоф никогда не станет равным -1 так что ли
413
23 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Да, вечно. Но не потому что EOF не станет -1, он-то всегда равен -1, а потому что getchar() не вернёт -1. Этовозможно только тогда, когда ты ввёл символ, но по каким-то причинам(читай системным ошибкам) он не смог быть прочитан.
85K
23 декабря 2012 года
Ando89
11 / / 21.12.2012
Я просто начал изучать язык си кернигана и в книги этот код написан и там говорится что прога для
"подсчет вводимых символов" поэтому я и не понимаю как оно реализуется
413
23 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Видимо, ты что-то напутал. Может, какие-то скобки пропустил.
85K
23 декабря 2012 года
Ando89
11 / / 21.12.2012
да нет же извени конечно за назойливость но вот полный текст проги
#include <stdio.h>

/* подсчет вводимых символов; 1-я версия */
main()
{
long nc;
nc = 0;

while (getchar() != EOF)
++nc;
printf(“%ld\n”, nc);
}
413
23 декабря 2012 года
CassandraDied
763 / / 24.05.2012
Он не будет работать хотя бы из-за кавычек.
85K
23 декабря 2012 года
Ando89
11 / / 21.12.2012
ладно спс попробую дальше понять сам
85K
26 декабря 2012 года
Ando89
11 / / 21.12.2012
понятно спс

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

Ваш ответ

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