2013-01-22 220 views
1

我想要做一個字符串的拆分,然後在拆分點插入另一個字符串到第一個字符串中。拆分一個字符串並組合2個字符串 - C

例子:

int main(int argc, char **argv) 
{ 
    char src1[4]= "foo"; 
    char src2[4]= "bar"; 

} 

我想給src1拆分爲foo插入src2,讓我得到一個字符串fbaroo。 C中最好的方法是什麼?

我試過使用snprintf,但我無法達到同樣的效果。以下是代碼:

snprintf(result, 1,"%s",src1[0]); 
snprintf(result, strlen(src2), "%s",src2); 
snprintf(result, strlen(src1)-1, "%s", **how do i get remaining characters**); 

Ofcourse,我可以把它分成最初以後結合,但我試圖尋找是否有更好的解決方案,即利用圖書館的功能呢?

回答

1

代碼中的snprintf全部都從頭開始覆蓋緩衝區。

這裏有一個呼叫做這件事

snprintf(result, sizeof(result), "%c%s%s", src1[0], src2, &src1[1]); 

&src1[1]說明如何獲取「字符串的其餘部分。」

1

首先,你需要足夠多的空間,一個新的字符串:

char finalString[7]; 

然後,你需要從src1的X字符第一次複製到我們的新的字符串,您可以通過memcpy實現這一點,或stcpy,我會與更晚的去。所以,如果你只想要第一個字符從src1複製你應該做的:

strcpy(finalString, src1, 1); 

現在只是複製src2串到它使用strcat

strcat(finalString, src2); 

並追加src1字符串的其餘部分,開始在第一個uncopied字符:

strcat(finalString, &src1[1]); 
1

我會去sprintf()

# include <stdio.h> 

int main(int argc, char **argv) { 

    char src1[4] = "foo"; 
    char src2[4] = "bar"; 
    char result[8] = {'\0'}; 

    sprintf(result, "%c%s%s", src1[0], src2, &src1[1]); 
    printf("Result: [%s];\n", result); 

} 

輸出:

$ ./a.out 
Result: [fbaroo];