C语言实现读写二进制文件
C语言提供了各种函数来读写二进制文件。二进制文件是一种以二进制形式存储数据的文件,与文本文件相比,二进制文件不以字符为单位,而是以字节为单位存储数据。读写二进制文件可以用于处理图片、音频、视频等非文本类型的文件。
要读写二进制文件,首先需要打开文件。使用`fopen`函数可以打开一个文件,语法为:
```c
FILE* fopen(const char *filename, const char *mode);
```
其中,`filename`是要打开的文件名,`mode`是打开文件的模式,常用的模式有:
- `"rb"`:以二进制模式打开一个已有的文件,用于读取。
- `"wb"`:以二进制模式打开一个文件,如果文件存在则截断为空文件,如果文件不存在则创建新文件,用于写入。
- `"ab"`:以二进制模式打开一个文件追加数据,如果文件不存在则创建新文件。
`fopen`函数返回一个指向`FILE`类型的指针,该指针表示已打开文件的文件流。
示例:
```c
#include <stdio.h>
int mai
FILE *file = fopen("data.bin", "rb");
if (file == NULL)
printf("无法打开文件\n");
return 1;
}
//在这里进行读写操作
fclose(file); // 关闭文件
return 0;
```
使用`fwrite`函数可以将数据以二进制形式写入文件,语法为:
```c
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
```
其中,`ptr`是指向要写入数据的指针,`size`是每个数据项的大小,`count`是要写入的数据项数目,`stream`是要写入的文件流。
示例:
```c
#include <stdio.h>
fread和fwrite的区别int mai
FILE *file = fopen("data.bin", "wb");
if (file == NULL)
printf("无法打开文件\n");
return 1;
}
int num = 1234;
fwrite(&num, sizeof(int), 1, file);
fclose(file);
return 0;
```
上述示例将一个整数写入名为"data.bin"的二进制文件中。
3.从二进制文件中读取数据
使用`fread`函数可以从文件中读取二进制数据,语法为:
```c
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
```
其中,`ptr`是指向接收数据的指针,`size`是每个数据项的大小,`count`是要读取的数据项数目,`stream`是要读取的文件流。
示例:
```c
#include <stdio.h>
int mai
FILE *file = fopen("data.bin", "rb");
if (file == NULL)
printf("无法打开文件\n");
return 1;
}
int num;
fread(&num, sizeof(int), 1, file);
printf("读取到的整数为:%d\n", num);
fclose(file);
return 0;
```
上述示例从名为"data.bin"的二进制文件中读取一个整数,并打印在屏幕上。
4.处理复杂的数据结构
如果要读写的数据结构比较复杂,可以先定义一个结构体来表示数据结构,然后使用`fwrite`和`fread`函数来进行读写。要注意,读写数据结构时需要确保输入输出的结构体的大小和字段顺序与文件中存储的数据相匹配。
示例:
```c
#include <stdio.h>
typedef struct
int id;
char name[20];
float score;