Как работает while ( !feof ( cfPtr ) )?
Как видишь, плохо работает. Потому что
man feof говорит нам, что функция возвращает статус потока, а статус потока меняется только от вызова других функций.
Поэтому по всем правилам было бы написать так:
FILE * cfPtr = fopen( "test.txt", "rb" );
char temp;
for (;;) {
int read = fread( &temp, sizeof( char ), 1, cfPtr );
if (read == 1) {
printf("%c\n", temp);
} else {
if (feof(cfPtr)) {
/*случился конец файла*/
} else if (ferror(cfPtr)) {
/* случилась ошибка */
}
break;
}
}