2014-02-13 40 views
0

假设我有一个名为“Book”的结构,在构建几个“Books”之后,我想将它们的原始数据打印到标准输出。我想不出有什么办法可以用printf来做,所以我不知道是否可以使用fwrite来读取“Book”并将其写入标准输出?是否可以将原始数据fwrite()到标准输出?

我试图像下面,但没有奏效:

+1

如果你的意图是写出'head-> Book',你为什么要指定lengthof(head-> p)'的长度? – rici

+0

@rici错字,修正! – Pig

+0

“没有工作”是什么意思? – rici

回答

0

可以写到标准输出,但它不会在人类可读的方式进行格式化 - 它将是二进制值,即恰好在结构字段(和填充字节)中。如果你想要一些可读的东西,请在结构的字段上使用printf

即使您确实需要二进制数据,对于fwrite结构也很少有好主意。首先,没有可移植的方式来读取它们,因为结构布局可能取决于平台,并且还可能泄漏敏感信息,因为填充字节和您未写入的数组部分等可能包含剩余信息程序的其他部分。您可以自己写明确的字段,也可以使用其中一个可用的序列化库。

相关问题