可以向文件写入少于1个字节

据我所知,C中的最小单位是一个byte 。 这种约束来自哪里? 中央处理器?

例如,如何将nibble或单个bit写入文件?

不,你不能……文件按字节组织,它是你可以保存的最小数据。

实际上,通常,1个字节将占用超过1个字节的空间。 根据操作系统,系统文件类型等,您保存为文件的所有内容都将使用至少一个块。 块的大小根据您使用的文件系统而有所不同。 然后,这个1位将被写为1字节,并且可以占用多达4kB的磁盘。

在维基百科中,您可以阅读有关字节是许多计算机中最小数据单元的内容。

实际上,它是一个char byte不是标准的C类型。

约束来自C标准并且是重复的: char是C中最小的完整类型,因为它被定义为这样,并且所有其他类型的大小被定义为char的大小的倍数(其大小始终为1

现在, char位数可能因平台而异。 位数最终往往是硬件定义的,尽管现在大多数系统都使用8位charchar应该代表最小的可寻址内存单元(同样,根据定义。)

此外,数据被写入扇区中的文件(例如512字节左右)。 如果我们只需要改变一个字节,整个扇区就会被读取,修补和写回。

但你不需要思考各个部门。 要更改一位,只需在文件中寻找合适的字节位置,读取该字节,更改位并将结果写回。