如何使用文件描述符使用 posix 库将二进制数据写入和读取 C 中的文件?

How to write and read binary data to file in C with posix library using file descriptors?

我想使用函数 write() 和 read() 将一些二进制数据写入文件“something.dat”。我得到文件描述符作为参数。目标是写入由“,”分隔的二进制数据:data、data1、data2、data3,然后从二进制文件中再次读取。我不允许使用 fopen()、fwrite() 和 fread()。

我搜索了二进制示例,但大多数其他示例都带有文件指针或函数,这些都不是选项。我能得到一个简单的例子如何做到这一点吗?剩下的我自己来做。

POSIX read()/write() 函数是隐式二进制的。直接写入数据:

uint8_t data[] = { 0x00, 0xFF, 0xDE } ;
ssize_t written = write( fd, data, sizeof(data) ) ;

看来您可能对fopen()"b"/"t"种打开方式感到困惑。这与这里无关——它只是二进制的。即使使用 "t"(文本)打开模式只影响行尾翻译,在行尾约定为 LF 的平台上(例如 Linux),它根本没有影响。

您的“目标”中 逗号分隔二进制 数据的概念存在缺陷。文本文件不包含字形,它们由 二进制 代码组成,表示平台可能呈现为字形的字符 - 例如在显示器上。

逗号由二进制序列 0010 1100(十进制 44)表示,因此您不能用逗号分隔二进制数据并将逗号与任何其他二进制数据区分开来。