Working with Binary Files in C: An Easy, Fun, & Free C Tutorial

Welcome to this tutorial on working with binary files in C. Binary files are a fascinating aspect of programming, and understanding them can open up a whole new world of possibilities. So, let’s dive right in!

Understanding Binary Files

Binary files are essentially a sequence of bytes. Unlike text files, which store data as human-readable text, binary files store data in a format that is easily readable by computers. This makes them particularly useful for storing complex data structures or large amounts of data.

Reading Binary Files in C

Reading binary files in C is similar to reading text files, with a few key differences. Here’s a simple example:

#include <stdio.h>

int main() {
    FILE *file;
    int num;

    file = fopen("file.bin", "rb");

    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    fread(&num, sizeof(int), 1, file);
    printf("Read from file: %d\n", num);

    fclose(file);

    return 0;
}
C

In this example, we open a binary file named “file.bin” in read mode, read an integer from the file, print it, and then close the file.

Writing Binary Files in C

Writing to binary files is also similar to writing to text files. Here’s an example:

#include <stdio.h>

int main() {
    FILE *file;
    int num = 12345;

    file = fopen("file.bin", "wb");

    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    fwrite(&num, sizeof(int), 1, file);
    printf("Written to file successfully!\n");

    fclose(file);

    return 0;
}
C

In this example, we open a binary file named “file.bin” in write mode, write an integer to it, and then close the file.

Code Examples

Example 1: Writing to a Binary File

#include <stdio.h>

int main() {
    FILE *fptr;
    int num = 12345;

    fptr = fopen("file.bin", "wb");

    if (fptr == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    fwrite(&num, sizeof(int), 1, fptr);
    printf("Written to file successfully!\n");

    fclose(fptr);

    return 0;
}
C

In this example, we open a binary file named “file.bin” in write mode, write an integer to it, and then close the file.

Example 2: Reading from a Binary File

#include <stdio.h>

int main() {
    FILE *fptr;
    int num;

    fptr = fopen("file.bin", "rb");

    if (fptr == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    fread(&num, sizeof(int), 1, fptr);
    printf("Read from file: %d\n", num);

    fclose(fptr);

    return 0;
}
C

In this example, we open a binary file named “file.bin” in read mode, read an integer from the file, print it, and then close the file.

Wrapping Up

Working with binary files in C is a powerful skill that can greatly enhance your programming capabilities. With a bit of practice, you’ll be handling binary files with ease!

Frequently Asked Questions (FAQ)

  • What is a binary file in C?

    A binary file in C is a file that stores data in a format that is easily readable by computers. Unlike text files, which store data as human-readable text, binary files store data in a binary format.

  • How do you handle binary files in C?

    Binary files in C are handled using the same file handling functions as text files, such as fopen, fread, fwrite, and fclose. The difference is that binary files are opened in binary mode (e.g., “rb” for reading, “wb” for writing).

  • How to convert a binary file to text in C?

    Converting a binary file to text in C involves reading the binary data, converting it to a human-readable format, and then writing it to a text file. The exact process depends on the structure and format of the binary data.

  • What is the difference between text files and binary files in C?

    The main difference is in how they store data. Text files store data as human-readable text, while binary files store data in a binary format that is easily readable by computers.

  • How to read and write integers in a binary file in C?

    Integers can be read from and written to binary files in C using the fread and fwrite functions, respectively. These functions take a pointer to the data, the size of the data, the number of such data items, and a file pointer.

  • What are the uses of binary files in C?

    Binary files in C are used to store complex data structures or large amounts of data. They are also used to store data in a format that can be easily read by computers, such as executable files or binary data from hardware devices.

  • How to open a binary file in C?

    A binary file can be opened in C using the fopen function with the mode set to binary (e.g., “rb” for reading, “wb” for writing).

  • What is the “rb” mode in fopen?

    The “rb” mode in fopen stands for “read binary”. This mode opens the file for reading in binary format.

  • What is the “wb” mode in fopen?

    The “wb” mode in fopen stands for “write binary”. This mode opens the file for writing in binary format.

  • Can I use fprintf and fscanf with binary files in C?

    While it’s technically possible to use fprintf and fscanf with binary files, it’s not recommended because these functions are designed for formatted input/output with text files. For binary files, it’s better to use fread and fwrite.

Related Tutorials

  1. Introduction to File Handling in C
  2. Reading from and Writing to Files in C
  3. File Modes and Operations in C
  4. Working with Text Files in C

Dr. Mehedi Hasan is a seasoned semiconductor professional, academic and web-designer with over a decade of experience in digital system design and verification as well as web development. Currently a Senior Engineer at AMD in Markham, Ontario, he plays a key role in the development and verification of cutting-edge chip technologies, earning multiple Spotlight Awards for his contributions.

Dr. Hasan holds a Ph.D. in Electrical and Computer Engineering from the University of Saskatchewan and has served in both academia and industry across Canada, Bangladesh, Malaysia, and Saudi Arabia. His expertise spans web-development, UVM-based SystemVerilog verification, static timing analysis (STA), RTL design, and scripting in multiple languages including Python, TCL, Shell as well as web-development tools including HTML, CSS, Javascript.

Passionate about knowledge sharing and education, Dr. Hasan has also worked as an Assistant Professor in Ontario, Canada (at Lakehead University) and Bangladesh University. He is committed to building accessible learning environments and is the founder of SkillSeminary, a platform focused on simplifying complex tech concepts for learners worldwide.

When he's not immersed in chip verification or educational projects, Dr. Hasan enjoys mentoring, researching system development, and promoting open tech education.

Scroll to Top