【发布时间】:2014-02-12 20:03:28
【问题描述】:
所以我有一本结构书,
struct book
{
unsigned short content_size;
unsigned short price;
unsigned char *content;
};
还有一个输入文件,其中包含 5 本书,内容类似,但实际文件为二进制形式:
content_size:64 价格:33
呸呸呸呸呸呸呸呸呸呸呸呸呸
content_size:16 价格:21
bbbbbbbbbbbbbbbb
content_size:16 价格:22
cccccccccccccccc
content_size:32 价格:10
dddddddddddddddddddddddddddddddddddddddddd
content_size:32 价格:8
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
但是,我得到了以下输出:
读一本书,大小为:64
读一本书,大小为:24929
读一本书,大小为:24929
读一本书,大小为:24929
读一本书,大小为:24929
读一本书,大小为:16
读一本书,大小为:25186
读一本书,大小为:16
读一本书,大小为:25443
读一本书,大小为:32
读一本书,大小为:25700
读一本书,大小为:25700
读一本书,大小为:32
读过一本书,大小为:25957
读过一本书,大小为:25957
这些大数字是什么,我为什么要阅读它们?谢谢!
【问题讨论】:
-
在你的结构中,
content是一个指针。在文件中,它是一个字符串。您需要将字符串读入一个新的内存块,然后设置指针指向它。 -
您必须逐个字段阅读。长度字段会告诉你有多大的缓冲区来 malloc 内容然后读取它。
-
逐个字段是什么意思? @鸭子