请各位C++高手帮忙修改一下下面的源码,谢谢!!

来源:百度知道 编辑:UC知道 时间:2024/06/28 05:02:31
#include <iostream>
#include <cstring>
using namespace std;
struct stringy
{
char * str;
int ct;
};
void set(stringy & st,char * ps);
void show(stringy & st,int n=1);
void show(char *ps, int n=1);
int main()
{
stringy beany;
char testing[]="Reality isn't what it used to be.";
set(beany,testing);
show(beany);
show(beany,2);
testing[0] = 'D';
testing[1] = 'u';
show(testing);
show(testing,3);
show("Done! " );
return 0;
}

void set(stringy & st,char * ps)
{
int len = strlen(ps);

st.str = new char[len];
strcpy(st.str,ps);
st.ct = len;
delete [] st.str;
return;
}

void show(stringy & st,int n)
{
for(int i=0;i<n;i++)
{
cout << st.str << endl;
cout << st.ct << endl;

这个题好像前面答过了。
struct stringy
{
char * str; //这里只有指针。没有空间分配
int ct;
};
strcpy(st.str,ps); 执行后,会报错的

#include <iostream>
#include <cstring>
using namespace std;
struct stringy
{
char str[100];
int ct;
};
void set(stringy & st,char * ps);
void show(stringy & st,int n=1);
void show(char *ps, int n=1);
int main()
{
stringy beany;
char testing[]="Reality isn't what it used to be.";
set(beany,testing);
show(beany);
show(beany,2);
testing[0] = 'D';
testing[1] = 'u';
show(testing);
show(testing,3);
show("Done! " );
return 0;
}

void set(stringy & st,char * ps)
{
int len = strlen(ps);

//st.str = new char[len];
strcpy(st.str,ps);
st.ct = len;
//delete [] st.str;
return;
}

void show(