Итак, у меня есть очень простая программа, которая читает 3 первых байта файла:
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
Вы знаете, откуда взялись эти первые позиции?Большое спасибо за вашу помощь