2014-03-30 34 views
0

我在寫一個程序,我需要連接兩個數組。如何連接指針數組

例如,如果我有:

int max =100; 
    char *append = "Hello"; 
    char *pStr = malloc(max); 

我將如何串聯appendpStr

+0

'pStr'目前不包含字符串,所以你不能追加到它。你能否舉一個例子來說明事後的情況? –

+0

你難以理解副本和連接嗎?有兩個函數可以執行 - 'strcpy'來複制和'strcat'來連接。 –

回答

-1
*pStr = 0; //to initialize it 
strcpy(pStr, append); 
+1

op想要連接,而不是副本。 – deeiip

+0

即使這是OP想要的,'* pStr = 0;'也沒有效果,因爲你立即複製它。 –

+0

@deeiip將一個字符串複製到一個空字符串不等於連接? – ebasconp

1

不,你不能。分配後,您無法更改大小。

你要做的是分配一個新的空間(足夠大以容納兩者),並將其複製到它。

char* str1 = "Hello"; 
char* str2 = "World"; 
char* con = (char*) calloc(strlen(str1) + strlen(str2) + 1, sizeof(char)); 
strcpy(con, str1); 
strcpy(con + strlen(str1), str2); 
fprintf("%s\n", con); // "HelloWorld" 
2

使用可以在這兩者之間進行選擇:在你的榜樣

char *pStr = malloc(max); 
char* str1 = "Hello "; 
char* str2 = "Wor"; 
char* str3 = "ld"; 
strcpy(pStr, str1); 
strcat(pStr, str2); 
strcat(pStr, str3); 

char *pStr = malloc(max); 
char* str1 = "Hello "; 
char* str2 = "Wor"; 
char* str3 = "ld"; 
pStr[0] = '\0'; 
strcat(pStr, str1); 
strcat(pStr, str2); 
strcat(pStr, str3); 

strcpy(pStr, append); 

pStr[0] = '\0'; 
strcat(pStr, append); 

strcpy不需要\0。它只是複製目標字符串(加上'\ 0')
strcat目標字符串連接到源字符串。來源必須爲空終止那就是爲什麼pStr[0] = '\0'

max必須足以容納所有的字符串加上終止字符\0

瓦爾特