2013-01-22 72 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];