C有什么像python pickle用于对象序列化吗?

时间:2011-05-13 04:19:33

标签: python c

我想知道C是否有类似于python pickle模块的东西,它可以将一些结构化数据转储到磁盘上,然后再加载回来。

我知道我可以逐字节地将我的结构写入磁盘上的文件,然后稍后再读回来,但是使用这种方法还有很多工作要做。例如,如果我有一个链接列表结构,我可以从头到尾遍历列表并在磁盘上写入每个节点的数据。当我从磁盘文件中读回列表时,我必须重建所有链接 在每对节点之间。

请告知是否有更简单的方法。

谢谢堆!

3 个答案:

答案 0 :(得分:4)

我担心,那个人强烈不赞成。 C具有基本文件I / O.任何数据结构都取决于您。组成一种格式,将其丢弃,然后将其读入。

可能有库可以做到这一点,但是C本身没有这样做。

答案 1 :(得分:2)

C库函数fread(3)fwrite(3)将读取和写入“数据元素”,但这是非常奇妙的说法“C库将进行一些乘法和pread(2)或者pwrite(2)在幕后调用以填充您的数组“。

可以struct上使用它们,但这可能不是一个好主意:

  • 结构中的孔被写入并读取
  • 你在整数的结尾处烘焙

虽然您可以为编写对象创建自己的格式,但您可能希望查看应用程序是否可以使用SQLite3进行对象的磁盘存储。它经过了很好的调试,如果您的应用程序能够很好地适应它的能力,它可能只是票证。 (并且 lot 比编写所有自己的格式代码更容易。)

答案 2 :(得分:-1)

Boost有serialization library,如果用“C”表示“C或C ++”。