1

我正在尝试拆分一个字符串,然后在拆分点将另一个字符串插入到第一个字符串中。

例子:

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

}

我想拆分src1asfoo插入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**);

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

4

3 回答 3

1

代码中的snprintfs 都从一开始就覆盖了缓冲区。

这是一次通话的一种方法

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

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

于 2013-01-22T01:34:51.347 回答
1

首先,您需要一个具有足够空间的新字符串:

char finalString[7];

然后你需要将 X 的第一个字符复制src1到我们的新字符串中,你可以通过memcpystcpy来实现,我会用后面的。因此,如果您只想复制第一个字符,src1您应该这样做:

strcpy(finalString, src1, 1);

现在只需使用strcatsrc2将字符串复制到它上面

strcat(finalString, src2);

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

strcat(finalString, &src1[1]);
于 2013-01-22T01:37:28.047 回答
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];
于 2013-01-22T01:39:33.387 回答