为什么后面的就成乱码了,C语言连接两个字符串

#include <stdio.h>
#include <string.h>

int fun1(char a[],char b[])
{
int i,j,k;
char c[100];
for(i=0;a[i]!='\0';i++)
c[i]=a[i];
for(j=i,k=0;b[j]!='\0';j++,k++)
c[j]=b[k];
printf("%s",c);
}
void main()
{
char a[100],b[100];
scanf("%s",a);
scanf("%s",b);
fun1(a,b);
}

第1个回答  2018-03-17
你没有把结束标记'\0'复制到字符数组c的末尾。
第2个回答  2018-03-17
拼接后的字符串结尾需要附上'\0',printf("%s",c);之前加一句c[j]='\0';试试
第3个回答  2018-03-17
#include <stdio.h>
#include <string.h>

int fun1(char a[],char b[])
{
int i,j,k;
char c[100];
for(i=0;a[i]!='\0';i++)
c[i]=a[i];
for(j=i,k=0;b[k]!='\0';j++,k++)//<==============
c[j]=b[k];
c[j]='\0';//<==============
printf("%s",c);
}
void main()
{
char a[100],b[100];
scanf("%s",a);
scanf("%s",b);
fun1(a,b);
}

本回答被提问者和网友采纳