我在尝试获取 C 中磁盘映像的卷标时遇到了奇怪的问题。我知道对于 FAT12 磁盘,这条信息位于偏移量 0x2b 或十进制的 43 处,长度为 11 个字节。无论如何,这是我现在的代码:
void main(int argc, char *argv[]) {
...
FILE *fp = fopen(argv[1], "rb");
printf("Volume Label: %s\n", seekData(fp, 43, 11));
...
}
unsigned char* seekData(FILE *fp, int offset, int bytes) {
unsigned char* buff = malloc(sizeof(unsigned char)*bytes);
fseek(fp, offset, SEEK_SET);
fread(buff, 1, bytes, fp);
rewind(fp);
return buff;
}
对于我使用的任何输入文件(.IMA),我都会20 20 20 20 20 20 20 20 20 20 20
以十六进制返回。或者就Volume Label:(nothing here)
在上面的代码运行时。我在这里错过了一些非常明显的东西吗?任何帮助,将不胜感激