c - C语言中如何将两个字符串的字符随机组合在一起?

标签 c string char

鉴于此作业: 编写一个有 3 个参数的函数:前两个参数将在第三个参数中组合。 示例:s1=”abcde”s2=”1234567”,结果:s3=”a1b2c3d4e567”

到目前为止,我的代码如下所示:

#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);
}

关于c - C语言中如何将两个字符串的字符随机组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547892/

相关文章:

java - 比较两个存储由 "#"分隔的整数值的字符串数组

c# - 从 char[] 转换后从字符串中修剪/空值(在 C# 中)

java - 修剪字符串 - 只得到我想要的

c - 当数据类型和返回类型从 int 更改为 float 或 double 时,行列式函数中出现段错误

c - 试图找到两点之间的距离,但我得到了错误的答案 :(

C++ -- ' ' 之前的预期主表达式

java - 在分隔符是一个单词的java中拆分一个字符串

c - 自动释放局部变量

c++ - 有没有办法找出我的操作系统在我的 RAM 中的位置?

c++ - C 中的 char* 字符串到十六进制数组