在C语言中,写入二进制数据主要有以下三种方式:
一、使用 `fwrite` 函数写入二进制文件
这是最常用的方法,通过 `fopen` 以二进制模式打开文件,然后使用 `fwrite` 写入数据。
```c
include
int main() {
FILE *file = fopen("data.bin", "wb");
if (!file) {
printf("无法创建文件!n");
return 1;
}
int number = 42;
float score = 95.5f;
char name[] = "张三";
fwrite(&number, sizeof(number), 1, file);
fwrite(&score, sizeof(score), 1, file);
fwrite(name, sizeof(name), 1, file);
fclose(file);
return 0;
}
```
二、使用位操作符直接操作二进制位
通过按位与、或、异或等运算符,可以修改整数的二进制位。
```c
int main() {
int a = 0b1000; // 8
int b = 0b0100; // 4
a |= b; // 按位或运算,a = 12 (1100)
printf("a: %bn", a); // 输出 1100
return 0;
}
```
三、使用位域结构体存储二进制数据
通过定义位域,可以在结构体中高效存储特定位数的二进制数据。
```c
include
struct BitField {
unsigned int a : 4; // 4位
unsigned int b : 2; // 2位
};
int main() {
struct BitField bf = {0b1010, 0b11}; // a=10, b=3
printf("a: %u, b: %un", bf.a, bf.b); // 输出 10 3
return 0;
}
```
说明:
文件操作:
使用 `fopen` 时需指定 `"wb"` 模式(二进制写入),`fwrite` 需传递数据指针及大小。
位操作:
适用于需要精细控制二进制位的场景,如加密、硬件寄存器操作等。
位域:
适合结构体中存储固定位数的字段,节省内存空间。