在C语言中,二进制文件读写主要通过标准库函数`fopen`、`fread`、`fwrite`和`fclose`实现。以下是具体操作步骤及注意事项:
一、核心函数说明
fopen 用于打开文件,需指定模式(如`"rb"`为二进制读取,`"wb"`为二进制写入)。
fread
从文件中读取数据,参数包括指向存储数据的指针、每个数据项大小、读取数量及文件指针。
fwrite
将数据写入文件,数据会被直接保存为二进制内容,与`fprintf`不同(后者会进行字符编码转换)。
fclose
关闭文件,释放资源。
二、操作流程示例
写入二进制文件
```c
FILE *fp = fopen("data.bin", "wb");
if (fp == NULL) { }
int data[] = {1, 2, 3, 4};
fwrite(data, sizeof(int), 4, fp);
fclose(fp);
```
读取二进制文件
```c
FILE *fp = fopen("data.bin", "rb");
if (fp == NULL) { }
int buffer;
fread(buffer, sizeof(int), 4, fp);
fclose(fp);
```
拷贝文件示例
```c
FILE *infile = fopen("source.bin", "rb");
FILE *outfile = fopen("destination.bin", "wb");
unsigned char buf;
size_t bytesRead;
while ((bytesRead = fread(buf, sizeof(char), sizeof(buf), infile)) > 0) {
fwrite(buf, sizeof(char), bytesRead, outfile);
}
fclose(infile);
fclose(outfile);
```
三、注意事项
错误处理: 每次文件操作后应检查返回值(如`fopen`是否为`NULL`),避免程序崩溃。 数据类型匹配
避免文本转换:使用二进制模式(`"rb"`/`"wb"`)防止字符编码问题,避免与文本模式混淆。
通过以上方法,可高效实现C语言中二进制文件的读写操作。