运行结果中出现“烫烫烫”,怎么办?

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:39:58
我这个程序结果中有“烫烫烫”,请大家帮忙修改修改,谢谢!
#include <iostream.h>
#include <string.h>
class CString
{
private:
int length;
char contents[20];
public:
CString(char st[])
{
strcpy(contents,st);
cout<<contents<<endl;
}
CString(CString &c)
{
strcat(contents,c.contents);
cout<<contents<<endl;
}

int GetLength()
{
return(strlen(contents));
}

};
void main()
{
CString str1("nihao"),str2("ccccc");
cout<<str1.GetLength()<<endl;
CString str3(str1);

}

你的拷贝构造函数CString(CString &c)里面有问题

因为之前contents并没有初始化,里面是无效的内容,而且没有结束标志,显示成10个烫字了
应该用strcpy(contents,c.contents);
或者先初始化contents[0]='\0';以确定contents是一个空串,然后再用strcat将新加的字符串接上

不用看程序。出现乱码就是内存地址指向错误了。或者没有初始化。

我在汇编时也遇到过这种情况 运行结果是乱码
但是程序没有错误
可能是机器中病毒的问题
这只是我遇到的情况 不知道适不适合你