fread () ведет себя странно - PullRequest
1 голос
/ 27 марта 2010

У меня проблема в моей программе на C, где после того, как я использую fread(), указатель файла иногда переходит в конец файла.

Я попытаюсь объяснить лучше - код выглядит примерно так:

dummy = ftell(fp);
fread(&buf, sizeof(unsigned char), 8, fp);
dummy = ftell(fp);

где fp - указатель файла на открытый файл (открыл его с помощью "w +", я использую его как двоичный файл, и я знаю, что там тоже должен быть "b", но Я слышал, это не очень важно добавить это ..), dummy это просто unsigned long переменная, и buf равно unsigned char[8]

сейчас, при отладке, на ftell до fread, dummy равно 262062 на ftell после fread, dummy составляет 262640 хотя я только «сдвинул» 8 байтов ..

Кто-нибудь знает, что может быть причиной этого ..? спасибо за вашу помощь:)

1 Ответ

5 голосов
/ 27 марта 2010

Если вы не используете b для открытия файла, ftell() не возвращает правду, это своего рода «cookie», который полезен только для fseek(). Есть много разных реализаций; проверьте страницу руководства вашей системы, чтобы узнать больше.

...