[英]Magic number in files. C programming
我想從二進制文件中獲取幻數。 例如,JPG文件的前幾個字節的FFD8為幻數。 我該如何閱讀? 我想編寫一個程序,檢查文件擴展名是否響應幻數,以及是否不重命名文件。
這是我認為應該的,但不起作用。 它總是打印不同的值。 如果文件是JPG,我希望它給我一個神奇的數字-FFD8。
int main()
{
FILE *f;
char fName[80];
char *array;
long fSize;
printf("Input file name\n");
scanf("%s", fName);
if((f=fopen(fName, "rb"))==NULL)
{
fprintf(stderr, "Error\n");
exit(1);
}
fseek (f , 0 , SEEK_END);
fSize = ftell (f);
rewind (f);
array=(char *)malloc(fSize+1);
fread(array, sizeof(char), 4, f);
printf("%x", array);
free(array);
}
printf("%x", ...)
需要一個int
參數,而您給它一個char *
,即一個指針 。 那是不確定的行為。
你可能的意思是
printf("%02hhx%02hhx%02hhx%02hhx\n", array[0], array[1], array[2], array[3]);
將前四個字符打印為十六進制數字。 (感謝@chux提醒我有關“ hh”修飾符的信息,該修飾符指定該轉換適用於有符號或無符號char
參數。)
(但請注意,“ FFD8”是兩個字節的十六進制表示法:0xFF,0xD8。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.