作者stupid0319 (徵女友)
看板C_and_CPP
标题[问题] 问一个建立struct的问题
时间Fri Nov 25 22:16:27 2016
开发平台(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
还是只能弄个同样大小的东西去塞他?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.78.26
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1480083390.A.33C.html
※ 编辑: stupid0319 (122.117.78.26), 11/25/2016 22:16:59
1F:→ james732: 好像只能塞用不到的member?能指定member offset有多好 11/25 22:24
2F:→ james732: 对了,提醒要注意alignment问题,可能会需要packed 11/25 22:25
3F:→ stupid0319: 对呀,没办法指定元素的偏移位置吗........ 11/25 22:31
4F:推 dijkstra: 塞char array吧 11/26 00:32
5F:→ dijkstra: 我是觉得也不用去建struct,直接用byte offset去取值 11/26 00:34
6F:→ stupid0319: 没有建struct会让程式变的很零乱,也比较会出现bug 11/26 00:54
7F:→ ilikekotomi: 塞char array还不错 11/26 01:23
8F:推 EdisonX: 标准 C 有个好用的 macro , 叫 offsetof, 用这个可以重新 11/26 02:41
9F:→ EdisonX: 抽出所有你要的成员。是我的话会用 11/26 02:41
10F:→ EdisonX: int convert( ITEMINFO * pInfo , mystruct * pMyInfo); 11/26 02:42
11F:→ EdisonX: 里面就用 offsetof 去做,这样以後 ITEMINFO 加成员也不用 11/26 02:43
12F:→ EdisonX: 改变上述的 "塞array" 的大小。 11/26 02:43
13F:→ stupid0319: 楼上的意思像是是不是struct打掉重组成另一个的感觉 11/26 07:13
14F:→ stupid0319: 但是要直接修改目标程式的记忆体内容会变的很不方便 11/26 07:17
15F:→ stupid0319: 不过又多学到了两个巨集了,感谢 11/26 07:18
16F:推 steve1012: 跟打掉没关系 11/26 08:14
17F:推 chuegou: 拿资料出来重排的感觉 11/26 13:24