[問題] 問一個建立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