如何将C中两个字符串的字符随机组合在一起?
问题描述:
鉴于这个功课: 写一个函数,它有3个参数:前两个将在第三个结合。例如:s1=”abcde”
,s2=”1234567”
,结果:s3=”a1b2c3d4e567”
。如何将C中两个字符串的字符随机组合在一起?
我的代码看起来像这样至今:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int homework(char a[], char b[])
{
char c[210]={'0'};
int h1=strlen(a);
int h2=strlen(b);
int i=0;
int j;
int db=0;
int l=0;
while (h1>=0 && h2>=0)
{
db++;
c[i]=a[l];
c[i+1]=b[l];
h2--;
h1--;
i+=2;
l++;
}
h1++;
h2++;
printf("%d %d",h1,h2);
if (h1>0){
i--;
while (h1>0)
{
c[i]=a[l];
l++;
i++;
h1--;
}
}
if (h2>0){
i--;
while (h2>0)
{
c[i]=a[l];
l++;
i++;
h2--;
}
}
for (j=0; j<strlen(a)+strlen(b); j++)
printf("%c",c[j]);
}
int main()
{
char a[100],b[100];
gets(a);
gets(b);
homework(a,b);
return 0;
}
的问题是当两个字符串的长度相等,它才有效。
答
你可以试试这个:
void Homework(char *str1, char *str2)
{
int i;
int j;
int k;
char *str3;
i = 0;
j = 0;
k = 0;
str3 = malloc(sizeof(char) * (strlen(str1) + strlen(str2)) + 1);
while (strlen(str3) != strlen(str1) + strlen(str2))
{
if (k % 2 == 0 && str1[i] != 0)
{
str3[k] = str1[i];
i++;
}
else if (k % 2 == 1 && str2[j] != 0)
{
str3[k] = str2[j];
j++;
}
else if ((i + 1) > strlen(str1))
{
str3[k] = str2[j];
j++;
}
else if ((j + 1) > strlen(str2))
{
str3[k] = str1[i];
i++;
}
k++;
}
printf("Your combine string is: %s. \n", str3);
}
你必须向我们展示你迄今为止尝试什么之前,我们可以用您的问题帮助你。 –
你真的真的应该也传递参数3的大小。'int combine(const char * src1,const char * src2,char * dst,size_t len);' – pmg
欢迎来到SO。你需要展示你的尝试 - 以代码的形式 - 来解决问题 – sjsam