将结构写入c中的文件

ama*_*hth 22 c file-io structure

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

例:

struct date {
    char day[80];
    int month;
    int year;
};
Run Code Online (Sandbox Code Playgroud)

pin*_*her 33

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

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

  1. 您可以使用fwrite函数来实现此目的.
  2. 您需要在第一个参数中传递引用.
  3. sizeof 第二个参数中的每个对象
  4. 要在第三个参数中写入的此类对象的数量.
  5. 第四个参数中的文件指针.
  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);
    }
    
    Run Code Online (Sandbox Code Playgroud)

你可以用同样的方式阅读它们....使用 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);
Run Code Online (Sandbox Code Playgroud)

  • @gaboraron写入的文件并不意味着要由文本编辑器读取,因为它是in对象的序列化形式。如果要阅读它,则需要编写一个C程序来阅读它。您需要查找文件末尾。您应该查看fread的输出。在这里查看:https://msdn.microsoft.com/en-us/library/kt0etdcs.aspx。通常,如果它是积极的,那么就会读到一些东西。 (3认同)
  • 他还应该至少注意结构填充 (2认同)