作者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/m.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