Почему пользователю не предлагается ввести данные для второго while
l oop, даже если индикатор конца файла был очищен?
Обратите внимание, что следующий код выполняется на Bash на Windows (Windows Подсистема для Linux).
#include <stdio.h>
int main(void)
{
int c;
printf("Reading from stdin\n");
while ((c = getchar()) != EOF) {
putchar(c);
}
printf("End of file reached\n");
printf("End of file indicator %s\n", (feof(stdin)) ? "not cleared" : "cleared");
printf("Clearing end of file indicator\n");
clearerr(stdin);
printf("End of file indicator %s\n", (feof(stdin)) ? "not cleared" : "cleared");
printf("Continue reading from stdin\n");
while ((c = getchar()) != EOF) {
putchar(c);
}
printf("End of file reached, all done\n");
return 0;
}
ВХОД:
one
two
Ctrl+D
ВЫХОД:
Reading from stdin
one
two
End of file reached
End of file indicator not cleared
Clearing end of file indicator
End of file indicator cleared
Continue reading from stdin
End of file reached, all done