
肖老师为您分享以下优质知识
在C语言中读写二进制文件需要使用标准库函数`fopen`、`fread`、`fwrite`和`fclose`,并注意以二进制模式打开文件。以下是具体操作方法和示例:
一、写入二进制文件
使用`fopen`函数以二进制写入模式(模式为`"wb"`)打开文件。若失败则检查指针是否为`NULL`。
写入数据
使用`fwrite`函数将数据写入文件。需指定数据指针、数据类型大小及数量。
关闭文件
使用`fclose`函数关闭文件以释放资源。
示例代码:
```c
include
int main() {
FILE *fp;
int data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
size_t count = sizeof(data);
// 打开文件
fp = fopen("data.bin", "wb");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
// 写入数据
size_t written = fwrite(data, sizeof(int), count, fp);
if (written != count) {
perror("Failed to write to file");
fclose(fp);
return 1;
}
// 关闭文件
fclose(fp);
return 0;
}
```
二、读取二进制文件
使用`fopen`函数以二进制读取模式(模式为`"rb"`)打开文件,并检查是否成功。
读取数据
使用`fread`函数将数据读取到缓冲区。需指定目标指针、数据类型大小及数量。
关闭文件
使用`fclose`函数关闭文件。
示例代码:
```c
include
include
int main() {
FILE *fp;
unsigned char buffer;
size_t bytesRead;
// 打开文件
fp = fopen("data.bin", "rb");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
// 读取数据
bytesRead = fread(buffer, sizeof(char), sizeof(buffer), fp);
if (bytesRead == 0) {
perror("Failed to read file");
fclose(fp);
return 1;
}
// 关闭文件
fclose(fp);
// 打印读取内容(十六进制表示)
for (size_t i = 0; i < bytesRead; i++) {
printf("%02X ", buffer[i]);
}
printf("n");
return 0;
}
```
三、注意事项
文件模式
- 写入使用`"wb"`,读取使用`"rb"`。
- 任何文件均可以二进制模式打开,无需特殊标志。
错误处理
- 检查`fopen`、`fwrite`的返回值,避免程序崩溃。
- 优先使用`feof()`检测文件结束,而非`fread`返回值。
结构体读写
- 写入结构体时,需确保结构体成员对齐方式与文件格式一致。
- 读取时需按相同结构体类型进行对齐。
通过以上方法,可安全高效地进行二进制文件的读写操作。