У меня есть двоичные данные, которые я читаю в массив длинных целых чисел, используя программу на Си.
Шестнадцатеричная последовательность двоичных данных показывает, что после первых нескольких точек данных она начинается снова с местоположения в 20000 шестнадцатеричных адресов.
Вывод hexdump такой, как показано ниже.
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0020000 0000 0000 0053 0000 0064 0000 006b 0000
0020010 0066 0000 0068 0000 0066 0000 005d 0000
0020020 0087 0000 0059 0000 0062 0000 0066 0000
... и так далее ...
Но когда я читаю его в массив данных из длинных целых чисел с помощью типичной команды fread
fread(data,sizeof(*data),filelength/sizeof(*data),fd);
Он заполняется всеми нулями в моем массиве данных, пока не достигнет местоположения 20000. После этого он правильно читает данные.
Почему он читает регионы, где моего файла нет? Или как мне сделать так, чтобы он читал только мой файл, а не то, что находится между файлами, которых нет в файле?
Я знаю, что это выглядит тривиальной проблемой, но я не могу понять это даже после того, как однажды вечером Гуглил.
Кто-нибудь может подсказать, где я делаю это неправильно?
Другая информация: я работаю на машине с GNU / Linux. (Slax-Atma Distro, чтобы быть конкретным). Мой компилятор Си gcc.