#include<iostream>
#include<cstring>
using namespace std;
class Mystring
{
int m,n;
char* s1;
char* s2;
public:
Mystring();
void Strcpy();
void Strcmp();
void Strlen();
void Strcat();
void Out1();
void Out2();
void Out3();
};
Mystring::Mystring()
{
strcpy(s1,"pear");
strcpy(s2,"apple");
}
void Mystring::Strcpy()
{
strcpy(s1,s2);
}
void Mystring::Strcmp()
{
m=strcmp(s1,s2);
}
void Mystring::Strlen()
{
n=strlen(s1);
}
void Mystring::Strcat()
{
strcat(s1,s2);
}
void Mystring::Out1()
{
cout<<s1<<endl;
}
void Mystring::Out2()
{
cout<<m<<endl;
}
void Mystring::Out3()
{
cout<<n<<endl;
}
int main()
{
int a;
Mystring p;
cout<<"s1=pear,s2=apple\n1.復制 2.比較 3.統計個數 4.連接"<<endl;
cin>>a;
if(a==1)
{
p.Strcpy();
p.Out1();
}
else if(a==2)
{
p.Strcmp();
p.Out2();
}
else if(a==3)
{
p.Strlen();
p.Out3();
}
else if(a==4)
{
p.Strcat();
p.Out1();
}
else
cout<<"wrong!"<<endl;
return 0;
}
uj5u.com熱心網友回復:
沒細看看到建構式里還沒給s1,s2分配記憶體就執行復制了,肯定出錯啊。
uj5u.com熱心網友回復:
首先給s1,和s2分配空間,大小自定義。char* s1 = new char[20];
char* s2 = new char[20];
其次,vs2017下使用strcpy和strcat不安全,它會建議你使用
strcpy_s(s1,20,"pear");
strcat_s(s1,20,s2);
uj5u.com熱心網友回復:
指標變數都要先分配地址(隨便給個值也可以的),不然的話很容易隨機分配到系統作業區,這種概率還是很大的哦uj5u.com熱心網友回復:
給個除錯不好嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122291.html
標籤:C++ 語言
上一篇:c語言構建九九乘法表
