求教为什么输出末尾会有乱码?

Dawn_Aaron 2017-11-20 03:13:35
程序如下:
#include <iostream>
#include<string.h>
using namespace std;
int main()
{
char a[100],b[100];
int i,j,m,n,x;
for(m=0;m<100;m++)
{
cin.getline(a,100);
n=strlen(a);
if(n<=49)
{
if(a[0]=='E')
{
if(a[1]=='N')
{
if(a[2]=='D')
return 0;
}
}
else
{
for(i=0;i<=n-1;i++)
{
b[i]=a[n-1-i];
}
for(j=1;j<=n;j++)
{
x=j;
for(i=j-1;i>=0;i--)
{
if(b[j]==b[i])
{
b[j]=b[++x];
i=j-1;
if(b[j]=='/0')
break;
}
else
continue;
}
}
cout<<b<<endl;
}
}
else
cout<<"OUT"<<endl;
}
return 0;
}


乱码情况如图。
...全文
243 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
JackyRao 2018-06-18
  • 打赏
  • 举报
回复
memset(b, 0x00, sizeof(b)); for (i = 0; i <= n - 1; i++) { b[i] = a[n - 1 - i]; }
赵4老师 2017-11-21
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
Dawn_Aaron 2017-11-20
  • 打赏
  • 举报
回复
引用 3 楼 Acuity_的回复:
字符串输完加结束符。
它不是会自动加\0的吗?
Acuity. 2017-11-20
  • 打赏
  • 举报
回复
字符串输完加结束符。
真相重于对错 2017-11-20
  • 打赏
  • 举报
回复
char b[100]={0};
自信男孩 2017-11-20
  • 打赏
  • 举报
回复
if(b[j]=='/0')
break;
}
这儿有点问题,if中比较应该是'\0',这个是字符串结束标记,所以应将'/0'改为'\0'
Dawn_Aaron 2017-11-20
  • 打赏
  • 举报
回复
Acuity. 2017-11-20
  • 打赏
  • 举报
回复
引用 4 楼 Dawn_Aaron 的回复:
[quote=引用 3 楼 Acuity_的回复:]字符串输完加结束符。
它不是会自动加\0的吗?[/quote] 自动也有条件的,你这里自定义的输入缓存,系统怎么知道你什么时候要结束符?当然自己手动加上去。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧