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.
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:
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.
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.
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));
read
The 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.
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));
#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.
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.
#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; }
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!