33

是否可以将整个结构写入文件

例子:

struct date {
    char day[80];
    int month;
    int year;
};
4

1 回答 1

39

是否可以将整个结构写入文件

您的问题实际上是将结构实例写入文件。

  1. 您可以使用fwrite函数来实现这一点。
  2. 您需要在第一个参数中传递引用。
  3. sizeof第二个参数中的每个对象
  4. 要写入第三个参数的此类对象的数量。
  5. 第 4 个参数中的文件指针。
  6. 不要忘记在binary mode.
  7. 您可以使用 fread 从文件中读取对象。
  8. 当您在小端系统中写/读和在大端系统中读/写时,请注意字节顺序,反之亦然。阅读how-to-write-endian-agnostic-cc-code

    struct date *object=malloc(sizeof(struct date));
    strcpy(object->day,"Good day");
    object->month=6;
    object->year=2013;
    FILE * file= fopen("output", "wb");
    if (file != NULL) {
        fwrite(object, sizeof(struct date), 1, file);
        fclose(file);
    }
    

您可以以相同的方式阅读它们....使用fread

    struct date *object2=malloc(sizeof(struct date));
    FILE * file= fopen("output", "rb");
    if (file != NULL) {
        fread(object2, sizeof(struct date), 1, file);
        fclose(file);
    }
    printf("%s/%d/%d\n",object2->day,object2->month,object2->year);
于 2013-06-08T07:26:57.040 回答