首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
凡是使用过C语言标准库函数strcpy(chaur*s1,char*s2)的程序员都知道,使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管
凡是使用过C语言标准库函数strcpy(chaur*s1,char*s2)的程序员都知道,使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管
admin
2020-05-14
43
问题
凡是使用过C语言标准库函数strcpy(chaur*s1,char*s2)的程序员都知道,使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管理策略为:①若已有空间能容纳新字符串,则直接进行字符串复制;②若已有空间不够时,将重新申请一块内存空间(能容纳下新字符串),并将新字符串内容复制到新申请的空间中,释放原字符串空间。
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.epp。
其中定义了类Stung和用于测试该类的主函数mmn,且成员函数Strcpy的部分实现代码也已在该文件中给出,请在标有注释“//TODO:”的行中添加适当的代码,将这个函数补充完整,以实现其功能。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//proj2.cpp
#include
usingnamespacestd;
classString{
private:
intsize;//缓冲区大小
char*buf;//缓冲区
public:
String(intbufsize);
voidStrcpy(char*s);//将字符串
s复制到bur中
voidPrint()const;
~String()
{if(bur!=NULL)delete[]bur;}
};
String::String(intbursize)
{
size=bursize;
bur=newchar[size];
*buf=’\0’;
}
voidString::Strcpy(char*s)
{
char*p*,*q;
intlen=strlen(s);
if(len+1>size){//缓冲区空间不够,须安排更大空间
size=len+1;
p=q=newchar[size];
//**********found**********
while((*q=*s)!=0){________}
//TODO:添加代码将字符串s复制到字符指针q中
delete[]bur;
buf=p;
}
else{
//**********found**********
for(p=bur;________;p++,s++);
//TODO:添加代码将字符串s复制到buf中
}
}
voidString::Print()const
{
cout<
end1;
}
intmain()
{
chars[100];
Stringstr(32);
cin.getline(s,99);
str.Strcpy(s);
str.Print();
return0;
}
选项
答案
(1)++q; ++s; (2)(*p = *s) != 0
解析
(1)主要考查考生对while循环的掌握,先看语句注释:添加代码将字符串s拷贝到字符指针q中。程序已经给出了赋值语句,这里只要使q和s递增即可。
(2)主要考查考生对for循环的掌握,先看语句注释:添加代码将字符串s拷贝到buf中。因为循环体中没有语句,直接用分号结束,因此需要在循环条件中完成赋值,同时进行条件判断,赋值语句为*p=*s,判断条件为当前字符不是字符串结束。
转载请注明原文地址:https://kaotiyun.com/show/Rr8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列类模板的定义中语法格式错误的是
表达式c3=c1.operator+(c2)或c3=operator+(c1,c2)还可以表示为______。
以下关于虚函数的叙述中不正确的是
下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当的语句,完成栈类模板的定义。template<classt>classT
在C++语言的面向对象程序设计框架中,______是程序的基本组成单元。
以下叙述中正确的是()。
空字符串的长度是_____。
C++语言规定,函数返回值的类型是由()。
假定其中的x的单位是角度且不考虑π值的精度,则与数学公式等价的C++语言表达式是
执行下列语句后,输出结果为steven的是 Char * str="steven"; cout. write(str, );
随机试题
下列关于JPEG标准的叙述,错误的是()
肝性脑病的诱发因素,不包括下列哪项
患者小便不利,发热,口渴欲饮,心烦不寐,证属水热互结。治疗应首选( )。
女,22岁,右侧胸痛,低热盗汗,38℃,右侧呼吸运动减弱,语颤减弱,呼吸音减弱,最可能的诊断是
呋塞米的利尿作用机制是()氢氯噻嗪的利尿作用机制是()
破产案件由债务人财产所在地人民法院管辖。()
报告属于陈述性的上行公文。()
下列各项中,有语病的一项是:
根据以下资料,回答下列问题。我国近岸海域监测面积共279225平方千米。2010年,按监测点位计算,水质最好的一、二类海水占62.7%,比上年下降10.2个百分点;三类海水占14.1%,比上年上升8.1个百分点;四类和劣四类海水占23.2%,比上年上升2
去年三星在中国销售了3000万台设备,市场占有率达到17.7%。
最新回复
(
0
)