我正在尝试在C中合并两个可变长度的字符串。结果应该是str1的第一个字符,然后是str2的第一个字符,然后是str1的第二个字符,str2的第二个字符,等等。当它到达一个字符串的末尾时,它应该追加其他字符串的其余部分。
例如:
str1 = "abcdefg";
str2 = "1234";
outputString = "a1b2c3d4efg";
我对 C 很陌生,我的第一个想法是将两个字符串都转换为数组,然后尝试遍历数组,但我认为可能有更简单的方法。示例代码将不胜感激。
更新: 我试图实现下面的答案。我的功能如下所示。
void strMerge(const char *s1, const char *s2, char *output, unsigned int ccDest)
{
printf("string1 is %s\n", s1);
printf("string2 is %s\n", s2);
while (*s1 != '\0' && *s2 != '\0')
{
*output++ = *s1++;
*output++ = *s2++;
}
while (*s1 != '\0')
*output++ = *s1++;
while (*s2 != '\0')
*output++ = *s2++;
*output = '\0';
printf("merged string is %s\n", *output);
}
但是我在编译时收到警告:
$ gcc -g -std=c99 strmerge.c -o strmerge
strmerge2.c: In function ‘strMerge’:
strmerge2.c:41:5: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat]
当我运行它时它不起作用:
./strmerge abcdefg 12314135
string1 is abcdefg
string2 is 12314135
merged string is (null)
为什么它认为参数 2 是一个 int,我如何将它修复为一个 char?如果我删除 printf 中的“*”输出,它不会给出编译错误,但该函数仍然不起作用。