это моя проблема: я не знаю, как читать целые числа из двоичного файла. Мне нужно решение для понимания проблемы, стоящей за кодом.
Это изображение моего двоичного файла:
Это формат для запоминания 32-битных целых чисел с прямым порядком байтов. Например, у нас есть файл с 3 значениями: 1, 2 и 3, в этом формате они будут кодифицированы в:
01 00 00 00 02 00 00 00 03 00 00 00 или 01 FF FF FF ....
Я написал некоторую строку кода, и я не понимаю, почему это не работает. Отладка не дает мне ошибок.
Это мой код
#include <stdlib.h>
#include <stdio.h>
int *leggiinteri2(const char *filename, size_t *size)
{
FILE *f;
int *p = NULL;
f = fopen(filename, "rb");
if (f == NULL) {
p = NULL;
}
else {
size_t nInteri = fread(size, sizeof(int), 1, f);
if (nInteri != 1) {
if (feof(f)) {
p = NULL;
}
if (ferror(f)) {
p = NULL;
}
}
else {
p = malloc(sizeof(int)*((int)size));
fseek(f, 0, SEEK_SET);
nInteri = fread(p, sizeof(int), *size, f);
if (nInteri != *size) {
if (feof(f)) {
p = NULL;
}
if (ferror(f)) {
p = NULL;
}
}
}
}
fclose(f);
return p;
}