输入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',即可。
- 1 回答
- 3 关注
- 930 浏览
添加回答
举报
0/150
提交
取消