EOF добавляет в счетчик, понятия не имею, почему
Я застрял, пытаясь понять, почему запуск eof
использование Ctrl-D добавляет к счетчику в for
петля.
Вот мой код:
#include <stdio.h>
int main()
{
double nc;
for (nc = 0; getchar() != EOF; nc++){
getchar();
}
printf("%.0f\n", nc);
return 0;
}
Мой результат:
0
1
2
3
4
5
6
7
8
8
это то, что мне дают, когда я использую Ctrl-D после ввода 7
, Есть ли причина, почему запуск eof
заставляет код выполнить еще один полный цикл? Я думал, что пустой буфер ничего не вернет.
1 ответ
Решение
Вот то, что вы можете пропустить. Возьми кусок своего кода:
for (nc = 0; getchar() != EOF; nc++)
getchar();
Есть два getchar()
, Давайте позвоним им, getchar1()
а также getchar2()
, Ваш вклад должен быть таким:
0\n
.
.
.
7\n
EOF
getchar1()
поймать последовательность цифр и EOF
, getchar2()
всегда ловить новую строку ('\n'). И количество проходов для тела цикла равно 8 (от 0 до 7).
Надеюсь, что это полезно для вас.