qslife 2016-08-10 14:19 采纳率: 100%
浏览 3767
已采纳

c语言中,为什么puts函数输出的字符串后有乱码?

输入一个4位的数字(1,2,3,4),存在字符串s1[4]中。
输入一个要插入的字符(W),存在字符c中。
s2[7]用来存储c插入s1后的结果,结果应该为“1W2W3W4”。
为什么puts(s2)输入的有乱码,我用的是win7+C-Free4.0。
代码如下:
#include
int main()
{
char s1[4],s2[7],c;
int i,j;
printf("请输入s1:");
gets(s1);
printf("*****s1输入成功*****\n");
puts(s1);
printf("\n");
printf("请输入要插入的字符:");
scanf("%c",&c);
fflush(stdin);
printf("*****要插入的字符c输入成功*****\n");
printf("%c\n",c);
printf("\n");

for(i=0,j=0;j<=6;i++,j++)
{
s2[j]=s1[i];
s2[j+1]=c;
j++;
}
printf("*****c字符插入s2字符串成功*****\n");
for(i=0;i<7;i++)
{
printf("%c",s2[i]);
}
printf("\n");
for(i=0;i<7;i++)
{
printf("s2[%d]=%c ",i,s2[i]);
}
printf("\nputs()输出:");
puts(s2);
return 0;
}
结果如下:
图片说明

  • 写回答

3条回答 默认 最新

  • StopZone 2016-08-10 15:08
    关注

    puts(char *) 的输出格式是遇到'\0' 结束输出,s2所指向的字符串末尾没有'\0',所以就把非法内存的东西输出出来了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致