在C语言中输出二进制文件内容主要通过以下两种方式实现:
一、使用 `fwrite()` 函数写入二进制文件
函数原型 ```c
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
```
- `ptr`:指向要写入数据的指针
- `size`:每个数据项的大小(以字节为单位)
- `nmemb`:要写入的数据项数量
- `stream`:指向目标文件的文件指针
示例代码
```c
include
int main() {
int data[] = {1, 2, 3, 4, 5};
FILE *fp = fopen("output.bin", "wb");
if (fp == NULL) {
printf("Error opening filen");
return 1;
}
fwrite(data, sizeof(int), 5, fp);
fclose(fp);
return 0;
}
```
该示例将整型数组以二进制形式写入名为 `output.bin` 的文件。
二、使用 `printf()` 函数格式化输出二进制数据
方法一:使用 `%b` 格式控制符
C标准库支持 `%b` 格式控制符直接输出二进制数,但需注意:
- 仅适用于整数类型(如 `%d`、`%u`)
- 需确保数据为无符号类型
示例代码
```c
include
void printBinary(unsigned int num) {
char binary;
for (int i = 0; i < 32; i++) {
binary[i] = (num & (1 << (31 - i))) ? '1' : '0';
}
binary = '0';
printf("Binary representation of %u: %sn", num, binary);
}
int main() {
unsigned int num = 42;
printBinary(num);
return 0;
}
```
方法二:手动转换并输出
通过位操作逐位提取二进制位,或使用短除法将十进制转换为二进制字符串。
注意事项
文件操作: 使用 `fopen` 时需指定模式 `wb`(二进制写入)或 `rb`(二进制读取)。 数据类型
符号处理:位操作方法不会保留符号位,仅输出二进制位序列。
以上方法可根据需求选择,文件写入适用于持久化存储,而格式化输出适用于调试或显示。