C语言 字符串输出时最后出现乱码

//输入字符串s1和s2,将它们合并为一个字符串//#include<stdio.h>#include<string.h>intmain(){inta,b,k;chars... //输入字符串 s1 和 s2,将它们合并为一个字符串//
#include<stdio.h>
#include<string.h>
int main()
{
int a,b,k;
char s1[1000],s2[1000],ex;
gets(s1); gets(s2);
a=strlen(s1);
b=strlen(s2);//计算字符串长度//
char s[a+b];
memcpy(s,s1,a);//把s1放入s中//
for(k=a;k<a+b;k++)
s[k]=s2[k-a];//把s2放入s中//
printf("s=%s\n",s);
return 0;
}
输入:
asdfg
zxc
输出如图,求问原因。
展开
 我来答
never715
2019-05-12 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:457万
展开全部
输出出现乱码就是因为字符串结尾并没有结尾符'\0'。
gets函数读入一行字符串时,会在最末尾自动加上'\0'结尾。但是你在for循环内将s2的字符一个个拷贝到s中的时候,循环限定条件只到了s2字符串的'\0'结尾符之前,所以输出乱码了。
将循环条件k<a+b改为k<a+b+1或者k<=a+b就可以将s2字符串最末尾的'\0'结尾符也一同赋值到s字符串的最后,输出就可以正常显示。
yang631144
2019-05-11 · TA获得超过552个赞
知道小有建树答主
回答量:618
采纳率:42%
帮助的人:157万
展开全部
#include<stdio.h>
#include<string.h>
int main()

int a,b,k; 
char s1[1000],s2[1000],ex; 
gets(s1);
gets(s2); 
a=strlen(s1); 
b=strlen(s2);//计算字符串长度// 
char s[a+b+1];
memcpy(s,s1,a);//把s1放入s中// 

for(k=a;k<a+b+1;k++)     

s[k]=s2[k-a];//把s2放入s中//
s[a+b]='\0';
printf("s=%s\n",s);

return 0;

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式