簡體   English   中英

文件中的幻數。 C程序設計

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM