为了账号安全,请及时绑定邮箱和手机立即绑定

请问我该怎样用fwrite 函数写1个bit的0或1?

请问我该怎样用fwrite 函数写1个bit的0或1?

C PHP
梵蒂冈之花 2021-10-21 15:15:53
c语言,怎样用fwrite 函数写1个bit的0或1
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

fwrite 写出的数据量 是以字节为单位的,所以不能只输出 1个字元。

你可以把每8个 字元 凑成一个字节 输出,最后一次输出 也许不得不 浪费 若干字元。

你可以用 位运算 凑字节。 也可以 用 结构体 位域 定义方法 作 bit 分配。
================
用 结构体 位域 定义方法 作 bit 分配的例子:
联合体用来方便地用16进制屏幕输出1字节。
fwrite() 输出可以直接用结构,不需要联合体那部分程序。

#include <stdio.h>
typedef struct bs
{
unsigned a1:1; unsigned a2:1;
unsigned a3:1; unsigned a4:1;
unsigned a5:1; unsigned a6:1;
unsigned a7:1; unsigned a8:1;
}BS;

union U{ BS b; unsigned char c; }

main(){
BS b={0};
union U uu;
b.a1=1;b.a2=1;b.a3=1; // 字元赋值
uu.b=b;
printf("0x%02x",uu.c); // 打印这一字节。
return 0;
}



查看完整回答
反对 回复 2021-10-24
?
智慧大石

TA贡献1946条经验 获得超3个赞

计算机存储最小单位是8位,亲,没有办法以一个bit为单位存储的

查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 385 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信