DEV Community

Noah11012
Noah11012

Posted on

5 2

Reading and Writing Files in C: Part 5

Just as I promised, we will write and subsequently read back a C structure! One caveat though: you need to know about binary files. You can learn more in the previous article.

For testing, the following structure will be used:

struct TestStruct
{
    int    a;
    double b;
};

First, a connection to a file, specifically, a binary file is needed. Next, we create an instance of TestStruct and set our desired values. Finally, using fwrite() to write the structure into the file.

#include <stdio.h>

typedef struct
{
    int    a;
    double b;
} TestStruct;

int main(void)
{
    FILE *file = fopen("test", "wb");

    TestStruct ts;
    ts.a = 105;
    ts.b = 194.543;

    fwrite(&ts, sizeof(TestStruct), 1, file);
    fclose(file);
}

Output:

~/Desktop 
 clang main.c 

~/Desktop 
 ./a.out 

~/Desktop 
 cat test 
i!VL7A`Qh@%                                                                    
~/Desktop 
 

Trying to output a file that is saved with a C structure results in garbage.

Let's now read back in the data and see if everything is still correct.

#include <stdio.h>

typedef struct
{
    int    a;
    double b;
} TestStruct;

int main(void)
{
    FILE *file = fopen("test", "rb");

    TestStruct ts;

    fread(&ts, sizeof(TestStruct), 1, file);
    fclose(file);

    printf("ts.a = %d\nts.b = %f\n", ts.a, ts.b);
}

Output:

~/Desktop 
 clang main.c 

~/Desktop 
 ./a.out     
ts.a = 105
ts.b = 194.543000

~/Desktop 
 

Everything was written and read properly.

Next

This is a short article and there is more to explore but I feel everything that was taught in this series will provide many people with adequate knowledge to accomplish basic and more difficult problems relating to files.

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More