C 如何从文件中读取魔法数字?

C 如何从文件中读取魔法数字?,c,C,我有一份文件清单。对于这些文件中的每一个,我需要确定起始的两个字符是否为-“!”。如何做到这一点?按照@williampersell的建议,使用fgetc加载这两个数字,然后比较它们: int i1, i2; FILE *file; file = fopen("yourfile", "rb"); if (file == NULL) { printf("Error: failed to open file"); return 1; } i1 = fgetc(file); i2 =

我有一份文件清单。对于这些文件中的每一个,我需要确定起始的两个字符是否为-“!”。如何做到这一点?

按照@williampersell的建议,使用fgetc加载这两个数字,然后比较它们:

int i1, i2;
FILE *file;

file = fopen("yourfile", "rb");
if (file == NULL) {
    printf("Error: failed to open file");
    return 1;
}
i1 = fgetc(file);
i2 = fgetc(file);

// 23h...#, 21h...!
if (i1 == 0x23 && i2 == 0x21) {
    // magic number
}

读这两个字。检查第一个是,第二个是。!在我看来这不是一个数字。。。连魔法都没有。我试过了,但我得到了令人困惑的符号。试过什么?我们不知道你尝试了什么,因此无法告诉你哪里不对。@Eugene Sh!shell脚本中是否使用了幻数?请看可能检查fopenI的返回值。我认为编写无bug代码也是问题的焦点不是我的DV,而是最好检查fgetc返回的类型。它不是char。也不是“或”!”您可以使用而不是十六进制值-使代码可读使用0x23和0x21是愚蠢的。