Home  >  Article  >  Backend Development  >  Binary file operations and sample code in C++

Binary file operations and sample code in C++

王林
王林Original
2023-08-22 15:39:182118browse

Binary file operations and sample code in C++

Binary file operations and sample code in C

In C, a binary file is a file stored in binary format and can contain any type of data, including integers , floating point numbers, characters, structures, etc., and can also read and write these binary files. This article will introduce you to binary file operations in C and provide some sample code to help you better understand and use binary file operations.

  1. Open a file

In C, you can use the file stream object in the fstream library to open a file. You need to open it before operating the file. The opening methods are divided into There are two methods of input (reading files) and output (writing files), as follows:

  • Input method:
ifstream fin;   //定义一个输入文件流对象
fin.open("test.txt", std::ios::binary);  //打开文件
if (!fin.is_open()) {
    std::cerr << "The file can not be opened.
";    //打开失败处理
    exit(EXIT_FAILURE);
}

Among them, ifstream is an input file stream object. open can accept two parameters: the first parameter is the file name, and the second parameter is the mode for opening the file. The binary mode is used here. If the opening fails, the error message will be output to the standard error stream and the exit function will be used to exit the program.

  • Output method:
ofstream fout;  //定义一个输出文件流对象
fout.open("test.bin", std::ios::binary); //创建文件
if (!fout.is_open()) {
    std::cerr << "The file can not be created.
";   //创建失败处理
    exit(EXIT_FAILURE);
}

Similarly, ofstream is an output file stream object, and the open function can also accept two parameters. The opening method here is to create a file. If the creation fails, the error message will be output to the standard error stream and the exit function will be used to exit the program.

  1. Read File

We can read data from a binary file using the read function as follows:

struct Student {
    char name[20];
    int age;
    float score;
};

Student stu;
fin.read((char*)&stu, sizeof(stu));

readThe function can accept two parameters: the first parameter is a character pointer type, pointing to the memory address where the data needs to be read; the second parameter is the number of data bytes that need to be read. It should be noted here that the read data must be written to a variable that has allocated memory, otherwise the program will terminate abnormally. Use the "&" symbol to get the memory address and force type conversion to a char pointer to read the char array in the binary file.

  1. Write File

We can use the write function to write data to a binary file as follows:

struct Student {
    char name[20];
    int age;
    float score;
};

Student stu = {"Alice", 18, 85.5};
fout.write((char*)&stu, sizeof(stu));
## The usage of the

#write function is similar to the read function, which also has two parameters. The first parameter is a character pointer type, which points to a memory address where data needs to be written; the second parameter is the number of data bytes that need to be written. Use the "&" symbol to get the memory address and force type conversion to a char pointer to write the char array in the binary file.

    Close the file
After completing the operation on the file, we need to close the file and release system resources to prevent the file from being occupied by other programs and inaccessible. As shown below:

fin.close();
fout.close();

close function can be used to close the file stream and clear the file cache. Of course, if the program exits abnormally, the file closing operation will also be automatically called.

    Complete sample code
The following is a complete sample code for reading and writing binary files, which defines a structure type as a data read and write Write object:

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

struct Student {
    char name[20];
    int age;
    float score;
};

int main() {

    // 创建一个存储二进制文件的fstream对象fout,并打开test.bin文件
    ofstream fout;
    fout.open("test.bin", std::ios::binary);
    if (!fout.is_open()) {
        cerr << "The file can not be created." << endl;
        exit(EXIT_FAILURE);
    }

    // 向test.bin文件中写入二进制数据
    Student stu1 = {"Alice", 18, 85.5};
    Student stu2 = {"Bob", 20, 90.0};
    fout.write((char*)&stu1, sizeof(stu1));
    fout.write((char*)&stu2, sizeof(stu2));
    fout.close();

    // 打开存储二进制文件的fstream对象fin,并读取test.bin文件
    ifstream fin;
    fin.open("test.bin", std::ios::binary);
    if (!fin.is_open()) {
        cerr << "The file can not be opened." << endl;
        exit(EXIT_FAILURE);
    }

    // 从test.bin文件中读取数据,并输出到屏幕
    Student stu3, stu4;
    fin.read((char*)&stu3, sizeof(stu3));
    fin.read((char*)&stu4, sizeof(stu4));
    cout << stu3.name << ", " << stu3.age << ", " << stu3.score << endl;
    cout << stu4.name << ", " << stu4.age << ", " << stu4.score << endl;
    fin.close();

    return 0;
}

    Summary
Binary file operation is a very convenient method in C, which can read and write any type of data, and also It can ensure that the accuracy of the data is not lost. In practical applications, we can use it flexibly as needed to improve program efficiency and data processing capabilities.

The above is the detailed content of Binary file operations and sample code in C++. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn