此报价来自CERT FIO09-C
使用fread()和fwrite()函数时,要考虑可移植性 跨多个异构系统。特别是从来没有 确保读取或写入标量数据类型,例如 整数,更不用说聚合诸如数组或结构之类的类型了 保留数据的表示形式或值。实现可能 结构填充,浮点模型,每位位数不同 字节,字节序和其他导致二进制数据格式的属性 不兼容。
...
读取格式与预期格式不同的二进制数据 导致程序意外行为。
我正在从Pearson C书中阅读:
尽管fread和fwrite读取和写入数据,例如整数 固定大小而不是可变大小格式,它们处理的数据是 以计算机“原始数据”格式(即数据字节)处理 而不是printf和scanf的人类可读文本格式。因为 数据的“原始”表示取决于系统,“原始数据”可能不依赖于系统 在其他系统或其他系统生成的程序上可读 编译器或其他编译器选项。
有关便携式文件的更多表示形式,请考虑使用文本文件或函数 可以处理二进制文件表示形式差异的库 跨平台。
我在网上搜索,但是找不到本书提到的C库。我尝试了许多不同的关键字,但没有弹出任何提示。不知道他是否意味着我必须编写自己的库,或者那里有库。
有人知道任何可以处理跨系统传输二进制数据(例如,用fwrite编写的文件)的C库吗?