C++输出字符数组,却显示烫等乱码~~求助各位大神

#include<iostream>
using namespace std;
int main()
{
char line[200];
int i=0;
cout<<"请输入字符:"<<endl;
cin.getline(line,199,'#');
cout<<line<<endl;
while(line[i]!='#')//加密处理
{
if((line[i]>='A'&&line[i]<='V')||(line[i]>='a'&&line[i]<='v'))
{
line[i]=char(line[i]+4);
}
else if((line[i]>='W'&&line[i]<='Z')||(line[i]>='w'&&line[i]<='z'))
{
line[i]=char(line[i]-22);
}
cout<<line[i];
i++;
}
return 0;
}

字符串应该以“\0”结尾,如果没有他会一直显示下去,当超过字符串的长度时,显示出来的很多都是乱码了,你应该在字符串结尾设置个“\0”
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-04
烫 是window控制台上c编程最容易出现的乱码,其实很简单,你访问了垃圾内存,字符串使用前,请记得:memset(str, 0, sizeof(str));一下,这样垃圾内存你就访问不到了本回答被网友采纳
第2个回答  推荐于2016-10-15
#include<iostream>
using namespace std;
int main()
{
char line[200];
int i=0;
cout<<"请输入字符:"<<endl;
cin.getline(line,199,'#');
while(line[i]!='\0')//字符串结束符为'\0'所以改为line[i]!='\0'
{
if((line[i]>='A'&&line[i]<='V')||(line[i]>='a'&&line[i]<='v'))
{
line[i]=char(line[i]+4);
}
else if((line[i]>='W'&&line[i]<='Z')||(line[i]>='w'&&line[i]<='z'))
{
line[i]=char(line[i]-22);
}
cout<<line[i];
i++;
}
return 0;
}本回答被提问者采纳
第3个回答  2018-10-09
char line[200] = {}; //初始化
第4个回答  2012-12-04
那个是我遇到过,当时是因为定义的数组没有赋值,看看你的是不是也是那个情况...
相似回答