Is it possible to write an entire struct to a file
example:
struct date { char day[80]; int month; int year; };
Open file to write. Check if any error occurs in file opening. Initialize the variables with data. If file open successfully, write struct using write method.
The easy solution is to put the definition in an header file, and then include it in all the source file that use the structure. To access the same instance of the struct across the source files, you can still use the extern method.
For reading and writing to a text file, we use the functions fprintf() and fscanf(). They are just the file versions of printf() and scanf() . The only difference is that fprintf() and fscanf() expects a pointer to the structure FILE.
Is it possible to write an entire struct to a file
Your question is actually writing struct instances into file.
fwrite
function to achieve this.sizeof
each object in the second argumentbinary mode
.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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With