在C语言中读写二进制文件主要使用以下函数和技巧:
一、读取二进制文件
打开文件
使用 `fopen()` 函数以二进制模式打开文件,模式参数为 `"rb"`(读二进制)。
```c
FILE *file = fopen("filename.bin", "rb");
if (file == NULL) {
printf("无法打开文件n");
return 1;
}
```
读取数据
使用 `fread()` 函数将数据从文件读取到缓冲区。参数包括指向缓冲区的指针、每个元素的大小、元素个数及文件指针。
```c
char buffer;
size_t bytesRead = fread(buffer, sizeof(char), 1024, file);
if (bytesRead == 0) {
printf("读取文件失败n");
fclose(file);
return 1;
}
```
关闭文件
使用 `fclose()` 函数关闭文件以释放资源。
二、写入二进制文件
打开文件
同样使用 `fopen()` 函数以二进制模式打开文件,模式参数为 `"wb"`(写二进制)。
写入数据
使用 `fwrite()` 函数将数据从缓冲区写入文件。参数包括指向数据的指针、每个元素的大小、元素个数及文件指针。
```c
int array = {1, 2, 3, 4, 5};
size_t bytesWritten = fwrite(array, sizeof(int), 100, file);
if (bytesWritten != 100) {
printf("写入文件失败n");
fclose(file);
return 1;
}
```
关闭文件
使用 `fclose()` 函数关闭文件。
三、注意事项
文件大小获取
若需一次性读取整个文件,可先使用 `fseek()` 将文件指针移至文件末尾,再通过 `ftell()` 获取文件大小,最后重新定位到文件开头进行读取。
错误处理
- 检查 `fopen()`、`fread()` 和 `fwrite()` 的返回值,确保操作成功。
- 读取时注意检查实际读取的字节数是否与预期一致。
数据对齐
二进制文件需注意数据对齐问题,建议使用 `struct` 定义数据结构,并通过 `fwrite()` 和 `fread()` 读写结构体。
通过以上步骤和技巧,可高效实现二进制文件的读写操作。