C でディスク イメージのボリューム ラベルを取得しようとして奇妙な時間を過ごしています。FAT12 ディスクの場合、この情報はオフセット 0x2b または 10 進数で 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
16 進数に戻ります。またはVolume Label:(nothing here)
、上記のコードが実行されたときだけです。ここで非常に明白な何かが欠けていますか?任意の助けをいただければ幸いです