拆分一个字符串并组合2个字符串 - C.

时间:2013-01-22 01:24:30

标签: c string gcc

我正在尝试对字符串进行拆分,然后在拆分时将另一个字符串插入第一个字符串。

示例:

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**);

当然,我可以将它最初拆分为以后合并,但我试图找出是否有更好的解决方案,即使用库函数?

3 个答案:

答案 0 :(得分:1)

代码中的snprintf都从头开始覆盖缓冲区。

这是通过一次通话

完成此操作的一种方法
snprintf(result, sizeof(result), "%c%s%s", src1[0], src2, &src1[1]);

&src1[1]显示了如何获取“字符串的其余部分。”

答案 1 :(得分:1)

首先你需要一个带有enought空间的新字符串:

char finalString[7];

然后你需要将src1的X个第一个字符复制到我们的新字符串中,你可以通过memcpystcpy实现这一点,我会选择后者。因此,如果您只想复制src1中的第一个字符,则应执行以下操作:

strcpy(finalString, src1, 1);

现在只需使用strcat

src2字符串复制到其上
strcat(finalString, src2);

并附加src1字符串的其余部分,从第一个未复制的字符开始:

strcat(finalString, &src1[1]);

答案 2 :(得分: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];