为了账号安全,请及时绑定邮箱和手机立即绑定

很尴尬的一个问题,关于c++的,求大神。。。

很尴尬的一个问题,关于c++的,求大神。。。

C++
菠萝1230 2017-03-13 20:35:12
输入16位以内长的字符串就正常,输入16位以外长的字符串就会出现乱码??多三位乱码#include <iostream>#include <string.h> using namespace std;void jiami1();void jiami2();void jiami3();int main(){ char a[101];int n; cin.getline(a,100); string s2;s2=(string)a;cout<<a<<endl;cout<<s2<<endl;int length = s2.length();int chu = length/16;int mod = length%16;for (int i = length;i<(chu+1)*16;i++){ a[i] ='-';}cout<<a<<endl;string s3;s3 = (string)a;cout<<s3.length()<<endl;    return 0; } 
查看完整描述

1 回答

已采纳
?
习惯受伤

TA贡献885条经验 获得超1144个赞

你的 a 变量长度是101个字符,并且没有初始化,里边的内容是随机的,当赋值的长度不够时,就会出现乱码。

解决方法有两种:

1、修改 char a[101]; 为 char a[101] = {0}; 初始化内容为空。

2、手动处理结尾

int i;
for (i = length; i<(chu + 1) * 16; i++) {
    a[i] = '-';
}
a[i] = '\0';

在循环后,最后一个字符加一个 '\0',即可。

查看完整回答
2 反对 回复 2017-03-13
  • 菠萝1230
    菠萝1230
    真的有效啊,长知识了,大神爱你,么么哒。
  • 1 回答
  • 3 关注
  • 900 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信