fwrite()与结构数组的输入不匹配。
尝试过:二进制文件,在fwrite之前打印struct元素的字段。
FILE *currentPartition;
struct FAT {
char *filename;
int file_length;
int blockPtrs[10];
int current_location;
} fat[20];`
for (int i=0;i<20;i++)
{
printf("Appending fat index: %d\n",i);
printf("filename: %s\n",fat[i].filename);
printf("file length: %d\n",fat[i].file_length);
printf("current location: %d\n",fat[i].current_location);
fwrite(fat,sizeof(struct FAT),1,currentPartition);}
当我稍后读取时,此代码不会返回我最初写入文件的内容。
最佳答案
您的结构包含一个指向filename
的指针,该指针是当时或写入时分配的数据的地址。您没有写代表名称的字符串,只是写了指向它的指针。
当您读取它时,您的程序将读取相同的指针,但是它指向何处?可能没有字符串,或者它位于完全不同的地址。因此,您需要确保已写入字符串。最简单的方法是将char filename[LEN];
作为您的struct字段,其中LEN足够大。否则,您需要单独编写字符串,然后将其还原为单独的实体。
关于c - Fwrite()结构数组,在C中归档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55699210/