Как в Языке си работает функция EOF помогите разобратся
Помогите кто может
#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 в соответствующей кодировке.
EOF - это не функция, это макрос. В макросе - константа, равная -1. Обычно именно это значение возвращают функции чтения символов, когда читать уже нечего.
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf(“%ld\n”, nc);
}
у меня на экран нечего не выводится не могу понять почему
Инструкция
до тех пор пока хотя бы один введённый символ можно прочесть с консоли
увеличить nc
вывести на консоль nc
Чтобы getchar не смог что-то прочесть с консоли - это надо постараться.
так я не пойму этот цикл будет работать вечно что ли потому что если я правильно вас понял еоф никогда не станет равным -1 так что ли
Да, вечно. Но не потому что EOF не станет -1, он-то всегда равен -1, а потому что getchar() не вернёт -1. Этовозможно только тогда, когда ты ввёл символ, но по каким-то причинам(читай системным ошибкам) он не смог быть прочитан.
"подсчет вводимых символов" поэтому я и не понимаю как оно реализуется
Видимо, ты что-то напутал. Может, какие-то скобки пропустил.
#include <stdio.h>
/* подсчет вводимых символов; 1-я версия */
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf(“%ld\n”, nc);
}
Он не будет работать хотя бы из-за кавычек.
ладно спс попробую дальше понять сам
понятно спс