#include <stdio.h>
int main()
{
int i,j;
FILE *f;
f=fopen("./pathto/sth.bmp","rb");
fread(&i,1, 1, f);
printf("%d ",i);
fread(&j,1, 1, f);
printf("%d ",j);
return 0;
}
Я хочу прочитать первые 2 значения из файла BMP. Я знаю, что их 66 и 77. Проблема в том, что если я прочитаю только первое значение, переменная «i» станет равной 66, что хорошо. Но если я прочитаю второе значение, как «j», тогда «j» станет 77, что хорошо, а «i» принимает случайное значение примерно как 196540, и я не понимаю, почему. Поэтому, если я прочитаю первое значение, все будет в порядке. Если я прочитал первые 2 значения, последнее значение будет хорошим, но первое будет изменено, оно станет случайным, например, 196540.Чтение из выпуска двоичного файла
Почему вы используете переменные 'int', когда вы читаете значения размера байта? Что такое 'sizeof (int)' на платформе, которую вы используете? –
Я подозреваю, что чтение 'unsigned char sig [2]' через 'fread (sig, sizeof (sig), 1, f)' будет ближе к тому, что вам кажется, хотя вы, вероятно, захотите потратить время на чтение [ весь заголовок] (https://en.wikipedia.org/wiki/BMP_file_format#Bitmap_file_header). – WhozCraig
необходимо проверить возвращаемые значения (а не значения параметров из вызовов 'fopen()' и 'fread()', чтобы убедиться, что операция выполнена успешно. – user3629249