Writing Structs to a file in c

amarVashishth picture amarVashishth · Jun 8, 2013 · Viewed 68.1k times · Source

Is it possible to write an entire struct to a file

example:

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

Answer

pinkpanther picture pinkpanther · Jun 8, 2013

Is it possible to write an entire struct to a file

Your question is actually writing struct instances into file.

  1. You can use fwrite function to achieve this.
  2. You need to pass the reference in first argument.
  3. sizeof each object in the second argument
  4. Number of such objects to write in 3rd argument.
  5. File pointer in 4th argument.
  6. Don't forget to open the file in binary mode.
  7. You can read objects from file using fread.
  8. Careful with endianness when you are writing/reading in little endian systems and reading/writing in big endian systems and viceversa. Read how-to-write-endian-agnostic-c-c-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);
    }
    

You can read them in the same way....using 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);