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

输入16位以内长的字符串就正常,

输入16位以外长的字符串就会出现乱码??多三位乱码

http://img.mukewang.com/58c6915100016bd506000270.jpg

http://img.mukewang.com/58c691df0001c04706970241.jpg







#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;

 


菠萝1230
浏览 931回答 1
1回答

习惯受伤

你的 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',即可。
打开App,查看更多内容
随时随地看视频慕课网APP