我正在尝试对字符串进行拆分,然后在拆分时将另一个字符串插入第一个字符串。
示例:
int main(int argc, char **argv)
{
char src1[4]= "foo";
char src2[4]= "bar";
}
我想将src1
分为f
和oo
以插入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**);
当然,我可以将它最初拆分为以后合并,但我试图找出是否有更好的解决方案,即使用库函数?
答案 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个第一个字符复制到我们的新字符串中,你可以通过memcpy或stcpy实现这一点,我会选择后者。因此,如果您只想复制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];