C语言,将两个数组中的字符串合并为一个,不能用连接函数

#include<stdio.h>
#include<conio.h>

int main()
{
char s1[100],s2[100],s3[100];
int i,j,a,b,c;
i=0;j=0;
while(s1[i]!='\0')
{scanf("%c",&s1[i]);
i++;
}
a=strlen(s1);
while(s2[j]!='\0')
{scanf("%c",&s2[j]);
j++;
}
b=strlen(s2);
printf("%d,%d\n",a,b);

for(i=0;s1[i]!='\0';i++)
{s3[i]=s1[i];}
for(i=0;s2[i]!='\0';i++)
{s3[i+a]=s2[i];}
c=a+b;
for(i=0;i<c;i++)
printf("%c",s3[i]);

}

运算结果有错,但是找不出来。。求解答!!!

#include<stdio.h>

int main()

{

  char s1[100],s2[100],s3[200];  

  int a,b,c;

  gets(s1);

  gets(s2);

  for(a=0,c=0;s1[a];)  

    {s3[c++]=s1[a++];}

  for(a=0;s2[a];)

    {s3[c++]=s2[a++];}

  s3[c]=s2[a];

  puts(s3);

  getch();

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-09
//首先你的输入就不对,因为'\0'是没办法输入的。后面的a,b的值也就不存在什么意义了。给你一个程序,你自己看一下吧。
#include<stdio.h>
#include<conio.h>

int main()
{
char s1[100],s2[100],s3[100];  
   int i,j,a,b,c;
scanf("%s",s1);
scanf("%s",s2);

for(i=0;s1[i] != '\0';i++)
{
s3[i]=s1[i];
}
for(j=0;s2[j] !='\0';j++)
{
s3[i+j]=s2[j];
}
s3[i+j]='\0';
printf("%s",s3);
}

本回答被提问者和网友采纳
第2个回答  2015-11-09

#include <stdio.h>
#include <string.h>
 
void  main()
{
    char s1[100], s2[100], s3[100];  
    int i, j, a, b;
    
    printf("input str1:\n"); scanf("%s", s1);
    printf("input str2:\n"); scanf("%s", s2);

    a = strlen(s1);
    b = strlen(s2);
    printf("%d, %d\n", a, b);
 
    i = 0;
    while(s1[i]) { s3[i] = s1[i]; i++;}

    j = 0;
    while(s2[j]) { s3[i] = s2[j]; i++; j++;}

    s3[i] = 0;

    for(i = 0; i < (a + b); i++)
      printf("%c", s3[i]);
      
    printf("\n");

}

相似回答