最初の 4 バイトが「\x4e\x45\x53\x1a」または NES\x1a である NES ROM ファイルを読み込んでいます。私の実際のコードでは、指定されたファイルは任意である可能性があるため、このヘッダーがここにあることを確認したいと思います。ただし、次のコードが示すように、いくつかの問題が発生しています。
#include <stdio.h>
#include <string.h>
int main()
{
    FILE *fp;
    fp = fopen("mario.nes", "rb");
    char nes[4];
    char real_nes[4] = "NES\x1a";
    fread(nes, 4, 1, fp);
    printf("A: %x\n", nes[3]);
    printf("B: %x\n", real_nes[3]);
    printf("C: %s\n", nes);
    printf("D: %s\n", real_nes);
    if (strcmp(nes, real_nes) != 0) {
        printf("not a match\n");
    }
    fclose(fp);
    return 0;
}
戻り値:
A: 1a
B: 1a
C: NES?
D: NES
not a match
疑問符は \x1a です。
私は C に慣れていないので、\x1a が文字列の最後にあり、B行がそうあるべきであることを示しているようです。