在C语言中,向文件内存入二进制数据主要通过`fwrite`函数实现,具体操作如下:
一、核心函数:`fwrite`
函数原型:`size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);`
`ptr`:指向要写入数据的指针;
`size`:每个数据项的大小(以字节为单位);
`nmemb`:要写入的数据项个数;
`stream`:目标文件指针(需以二进制模式打开)。
二、操作步骤
使用`fopen`函数以二进制写入模式(`"wb"`)打开文件,获取文件指针`FILE *fp`。
写入数据
- 基本数据类型: 直接传递变量地址和大小,例如: ```c int x = 10; fwrite(&x, sizeof(int), 1, fp); ``` - 结构体
```c
struct Student {
int num;
char name;
float score;
} student1;
fwrite(&student1, sizeof(student1), 1, fp);
```
- 字符数组:需转换为`char*`类型,例如:
```c
char name[] = "张三";
fwrite(name, sizeof(name), 1, fp);
```
使用`fclose`函数关闭文件,释放资源。
三、注意事项
数据对齐:
二进制文件按内存对齐规则存储,结构体成员顺序会影响文件内容。
错误处理:建议检查`fopen`、`fwrite`的返回值,确保操作成功。
四、示例代码
以下是一个完整的写入示例,包含结构体数据的写入:
```c
include include struct Student { int num; char name; float score; } student1 = { {1, "张三", 95.5f}, {2, "李四", 88.0f}, // 其他学生数据... }; int main() { FILE *fp = fopen("data.bin", "wb"); if (!fp) { perror("无法打开文件"); return 1; } for (int i = 0; i < 5; i++) { fwrite(&student1[i], sizeof(student1[i]), 1, fp); } fclose(fp); return 0; } ``` 该代码将5个学生记录以二进制形式写入`data.bin`文件,每个记录包含整数、字符数组和浮点数。