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/

10-11 15:22