2011-06-03 121 views
1
struct { 
    char a[10]; 
    char b[5]; 
    char c[10]; 
} info; 

如何將所有的struct數據成員連接成一個數組成員?將結構成員複製到陣列

+1

如果你能保證有與結構成員由於對準之間沒有間隙,你可以簡單地memcpy的結構體作爲一個整體。 – 0xC0000022L 2011-06-03 00:51:44

+3

成員是「char」數組還是「nul終止字符串」? – 2011-06-03 00:52:37

+0

@Chris:它們是以null結尾的字符串! – kiran 2011-06-03 00:59:59

回答

5

隨着memcpy()

// Assign a buffer big enough to hold everything 
char *buf = malloc(sizeof(info.a) + sizeof(info.b) + sizeof(info.c)); 
// Get a pointer to the beginning of the buffer 
char *p = buf; 
// Copy sizeof(info.a) bytes of stuff from info.a to p 
memcpy(p, info.a, sizeof(info.a)); 
// Advance p to point immediately after the copy of info.a 
p += sizeof(info.a); 
// And so on... 
memcpy(p, info.b, sizeof(info.b)); 
p += sizeof(info.b); 
memcpy(p, info.c, sizeof(info.c)); 
+0

對不起,我是C的初學者,請問xplain這個過程實際上是如何工作的?謝謝 – kiran 2011-06-03 00:50:58

+0

@kiran:我已經更新了我的回答,現在有一些評論。 – 2011-06-03 00:54:28

+0

Thanx Oli !!!!!! – kiran 2011-06-03 00:58:50

0

你可以用sprintf。這funcions「打印」字符串轉換成anoter:

int struct_size = sizeof(info); 
char *result = (char*)malloc(sizeof(char)*struct_size); 
sprintf(result, "%s%s%s", info.a, info.b, info.c); 
+0

我可以在不使用malloc的情況下將所有結構數據成員連接成單個數組嗎? – kiran 2011-06-03 04:02:15

+0

你能告訴我如何將結構數組成員複製到單個數組而不使用指針嗎?因爲我試圖將一個固定長度的數組傳遞給另一個函數。感謝您的時間和幫助。 – kiran 2011-06-03 04:13:47