【发布时间】:2016-12-15 09:36:39
【问题描述】:
我从 bin 文件中读取了这段代码。
数据保存在结构数组中并以空值结尾
我的目标是读取用 c 代码编写的数据
write (filehandle, (char *)arrayOfCELLs, sizeof(arrayOfCELLs);
到一个文件,到同一个结构 arrayOfCELLs 使用 D.
我的问题是,在 c 中我通过转换为 (char *) 将文件读入 struct arr[]
read(filehandle, (char *)arrayOfStructs, sizeof(arrayOfStructs)
auto buffer = FileHandle.rawRead(arrayOfStructs)
缓冲区在哪里获取到 sizeof arrayOfStructs 的数据。
但是,我的问题来了,缓冲区似乎获取了原始数据,包括空终止,但都位于接收数组的 [0] 中,而且,我不明白/不知道它是什么数据类型(CELL[] 或字符串[] 或.....
struct CELL{ char [20] name, int sect, int type ...};
struct CELL [50] arrayOfCELLs;
auto buffer = ..rawRead(arrayOfCELLs)
缓冲区中接收到的数据是(部分)这个
[CELL("TEST\0feed\0\0\0\0\0\0\0\0\0\0\0", 1, 1,
第一个是名称,“TEST”后跟空终止,然后是 sect = 1, ptyp = 1 。现在第二个 CELL 持有这个
CELL("\x01\0\0\0\x02\0\0\0N\0\0\0\x04\0\0\0\x02\0\0\0", 65656, 655375,
这都是错误的,应该是“测试”和2,1, 如果我在终端做一只猫,我会得到 p>
anders$ cat cellspec
TESTfeedOx
atestTailingNx
aOF2 cycl primO?
问题,任何想法为什么会这样,我该怎么做才能让它正确?
【问题讨论】:
-
你能把你的 cellspec 或者你的 C 和 D 代码贴在某个地方吗
-
希望此下载链接有效,它适用于 cellspec 1drv.ms/u/s!AmN2cOqroYulgpAx8xZrCQEuj6pR9A