您的位置:首页 > 编程语言 > C语言/C++

C++primer plus第六版课后编程题答案8.3(正解)

2014-04-10 16:34 405 查看
在百度知道里面得到了正确的答案
http://zhidao.baidu.com/question/198940026560129285.html?quesup2&oldq=1
#include<iostream>
#include <string>//出问题时,使用的是cstring,但换成string一样出问题
using namespace std;
struct stringy{
char *str;
int ct;
};
void set(stringy &beany,const char t[]);
void show(const stringy &beany,int count=0);
void show(const char t[],int count=0);
void main84()
{
stringy beany;
char testing[]="Reality isn't what it used to be.";
//char testing[]="Reality";//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!");
cout<<beany.str<<endl;
cout<<"here is in"<<endl;

if(beany.str!=NULL)	//总会引起中断,说是堆损坏
{
delete []beany.str;
cout<<"no null"<<endl;
}
else
cout<<"str is null";

system("pause");

}

void set(stringy &beany,const char t[])
{
//delete beany.str;
int size=strlen(t);//在这里,t已经退化成了一个指针,不能用sizeof获取长度!!!
int size=sizeof(t);//这里出了问题,长度测试错误,当长度超过八个字符是,直接出错!
cout<<"size="<<size<<endl;
beany.str=new char[size+1];
strcpy(beany.str,t);
int sizeofStr=strlen(beany.str);
cout<<"Sizeofstr="<<sizeofStr<<endl;
beany.ct=size;

}

void show(const stringy &beany,int count)
{
cout<<"Stringy show"<<endl;
if(count!=0)
{
for(int j=0;j<count;j++)
{
//cout<<"in stringy here!"<<j<<endl;
//cout<<"Stringy show"<<j<<endl;
cout<<"str="<<beany.str<<endl;
};
}
else
cout<<"str="<<beany.str<<endl;

}
void show(const char t[],int count)
{
cout<<"Testing show:"<<endl;
if(count==0)
cout<<"str="<<t<<endl;
else
for(int i=0;i<count;i++)
{
cout<<"Testing show:"<<i<<endl;
cout<<"str="<<t<<endl;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: