Так что у меня очень простая программа, которая считывает первые 3 байта файла:ftell ошибка после первого вызова FREAD
int main(void) { FILE *fd = NULL; int i; unsigned char test = 0; fd = fopen("test.bmp", "r"); printf("position: %ld\n", ftell(fd)); for (i=0; i<3; i++) { fread(&test, sizeof (unsigned char), 1, fd); printf("position: %ld char:%X\n", ftell(fd), test); } return (0); }
Когда я пытаюсь его в текстовый файл это работает отлично:
position: 0 position: 1 char: 61 position: 2 char: 62 position: 3 char: 63
, но когда я запускаю его с PNG, например, я получаю:
position: 0 position: 147 char:89 position: 148 char:50 position: 149 char:4E
Обратите внимание, что первые 3 байта файла действительно 89 50 4E, но я не знаю, откуда приходит 147. С .bmp файлом я получаю:
position: 0 position: -1 char:42 position: 0 char:4D position: 1 char:76
Вы знаете, где эти первые позиции взялись? Большое спасибо за вашу помощь
Благодарим вас за быстрый ответ! – bAp