Я читаю двоичный файл побайтово, мне нужно определить, достиг или нет eof.
feof () не работает, так как «eof устанавливается только при выполнении запроса на чтение несуществующего байта». Итак, я могу сделать свой собственный check_eof, например:
if ( fread(&byte,sizeof(byte),1,fp) != 1) {
if(feof(fp))
return true;
}
return false;
Но проблема в том, что если eof не достигнут, мой указатель файла перемещается на байт вперед.
Таким образом, решение может заключаться в использовании ftell()
, а затем fseek()
, чтобы вернуть его в правильное положение.
Другим решением может быть буферизация байта в некотором временном хранилище.
Есть ли лучшие решения?