[问题] 问一个建立struct的问题

楼主: stupid0319 (征女友)   2016-11-25 22:16:27
开发平台(Platform): (Ex: Win10, Linux, ...)
windows
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VS
问题(Question):
我写的程式,要读取另一个程式内存内的资料
那个资料是完整的struct结构,但是其内容非常大
而我只知道struct的大小,但整个结构不知道
但是我只要其中几个数据
我自己建立一个struct去读他
typedef struct _iteminfo
{
int index;
int type;
char* name;
.
.
.
int count;
.
.
_iteminfo* next;
}*ITEMINFO
中间的....有的资料但是我用不到,我要怎么把中间的资料弄满去完成这整个struct
还是只能弄个同样大小的东西去塞他?
作者: james732 (好人超)   2016-11-25 22:24:00
好像只能塞用不到的member?能指定member offset有多好对了,提醒要注意alignment问题,可能会需要packed
楼主: stupid0319 (征女友)   2016-11-25 22:31:00
对呀,没办法指定元素的偏移位置吗........
作者: dijkstra (邪恶数学家)   2016-11-26 00:32:00
塞char array吧我是觉得也不用去建struct,直接用byte offset去取值
楼主: stupid0319 (征女友)   2016-11-26 00:54:00
没有建struct会让程式变的很零乱,也比较会出现bug
作者: ilikekotomi (Young)   2016-11-26 01:23:00
塞char array还不错
作者: EdisonX (卡卡兽)   2016-11-26 02:41:00
标准 C 有个好用的 macro , 叫 offsetof, 用这个可以重新抽出所有你要的成员。是我的话会用int convert( ITEMINFO * pInfo , mystruct * pMyInfo);里面就用 offsetof 去做,这样以后 ITEMINFO 加成员也不用改变上述的 "塞array" 的大小。
楼主: stupid0319 (征女友)   2016-11-26 07:13:00
楼上的意思像是是不是struct打掉重组成另一个的感觉但是要直接修改目标程式的内存内容会变的很不方便不过又多学到了两个宏了,感谢
作者: steve1012 (steve)   2016-11-26 08:14:00
跟打掉没关系
作者: chuegou (chuegou)   2016-11-26 13:24:00
拿资料出来重排的感觉

Links booklink

Contact Us: admin [ a t ] ucptt.com