[問題] struct的data大小是可變的...

看板C_and_CPP (C/C++)作者時間16年前 (2009/02/25 22:35), 編輯推噓3(3010)
留言13則, 4人參與, 最新討論串1/4 (看更多)
假設我有個 struct msg { int length; char data[n]; }; 我想讓data的大小是可變的 然後透過網路送出去 這樣不知道要怎麼做比較好阿? 我只知道可以用 dynamic allocate struct msg { int length; char *data; }; msg->data= (char*)allocate(sizeof(char)*n); 1. 我很好奇 這樣動態的宣告data的大小會不會有問題阿? 2. 還有一個問題是此時的data放的是動態allocate到資料的位址 這樣我把msg傳出去 遠端的電腦收到這個data的指標也沒用阿 它也指不到這個動態的區域 所以我想請問到底怎麼宣告這個大小不一定的structure 且送出去的時候 遠端也可以順利的讀到這個structure 謝謝指教... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.123.202

02/25 22:38, , 1F
1. 那是指標, 所以沒問題
02/25 22:38, 1F

02/25 22:39, , 2F
訂定一個資料結構裡面放著各個資料量的大小
02/25 22:39, 2F

02/25 22:39, , 3F
2. 傳送的機制我不清楚, 但是接收的是指標的話
02/25 22:39, 3F

02/25 22:39, , 4F
把該資料結構當作header,接收的人用該資訊產生各大小的區塊
02/25 22:39, 4F

02/25 22:40, , 5F
接下來就是依序的把資料傳過去
02/25 22:40, 5F

02/25 22:41, , 6F
不要理我, 看S大的推文就好
02/25 22:41, 6F

02/25 22:47, , 7F
謝謝S大的回應 不過我還是希望不管資料大小 傳送一次做完
02/25 22:47, 7F

02/25 22:49, , 8F
不然我直接 宣個一個固定n的data 比n大的傳 分段傳
02/25 22:49, 8F

02/25 22:56, , 9F
還是希望傳送的msg structure可以依使用者喜好變大變小
02/25 22:56, 9F

02/25 22:56, , 10F
且一次就傳出去 謝謝
02/25 22:56, 10F

02/25 22:58, , 11F
cast 成 char * 傳過去, 另一邊再 cast 回你的 type
02/25 22:58, 11F

02/25 22:58, , 12F
長度問題, 你收資料會知道它多大, 要不然存個長度在 header
02/25 22:58, 12F

02/25 22:58, , 13F
或者是 zero end (如果你的 data 是 ascii)
02/25 22:58, 13F
文章代碼(AID): #19fLSxhe (C_and_CPP)
文章代碼(AID): #19fLSxhe (C_and_CPP)