我試圖從圖像文件中使用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
。
有被注意到待觀察。看[問]並提供[mcve]。並且不要發佈文字的圖像! – Olaf
是的,但圖像顯示正確的十六進制值 – Davide
*'st.st_size來自包'* - 什麼包? – Wolf