最初の 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行がそうあるべきであることを示しているようです。