Я пытаюсь прочитать шестнадцатеричные значения из файла изображения, используя C. В Linux этот код работает нормально, но с Windows он читает только первые 334 байта, и я не понимаю Зачем.Чтение шестнадцатеричного значения из изображения в C
Код для чтения файла является:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
void readHexFile(char* path) {
FILE *fp;
if ((fp = fopen (path, "r")) != NULL) {
struct stat st;
stat(path, &st);
int i;
int ch;
for (i = 0; i < st.st_size; i++) {
ch = fgetc(fp);
printf("%x ", ch);
}
fclose(fp);
}
else {
return NULL;
}
}
st.st_size
приходит из <sys/stat.h>
пакета и содержит правильное значение (размер в байтах файла изображения)
Это изображение показать, что мои программа выводит, и фактическое содержимое двоичного файла он читает:
Как вы видите после последовательности 17
, 18
, 19
есть также шестнадцатеричные значения, но моя программа печатает ffffffff
несколько раз.
Ожидается, что вас увидят. См. [Ask] и укажите [mcve]. И не размещайте изображения текста! – Olaf
Да, но изображение показывает правильные шестнадцатеричные значения – Davide
* 'st.st_size поступает из пакета' * - какой пакет? – Wolf