首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
凡是使用过C语言标准库函数strcpy(chaur*s1,char*s2)的程序员都知道,使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管
凡是使用过C语言标准库函数strcpy(chaur*s1,char*s2)的程序员都知道,使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管
admin
2020-05-14
84
问题
凡是使用过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://www.kaotiyun.com/show/Rr8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
假设函数fun已经定义,其原型为“voidfun(inta,intb=7,char*p=**);”下列函数调用中错误的是
下列关于派生类的叙述中,错误的是
当调用函数时,实参是一个数组名,则向函数传送的是______。
有如下程序:#include<iostream>usingnamespacestd;classsample{private:intx,y;public:sample(i
以下函数实现的功能是voidfun(char*s){char*p,*q,temp;p=s;q=s+strlen(s)-1;while(p<q){temp=*p;*p=*
用树形结构来表示实体之间联系的模型称为()。
下列叙述中正确的是()。
下列语句错误的是()。
下列选项中不全是C++语言关键字的是
C++语言标识符是以字母或______开头的,由字母,数字和下划线组成的字符串。
随机试题
某学校给7个学生安排宿舍。这7个学生中,K和L是四年级,P和R是三年级,S、T和V是二年级。宿舍有单人间、双人间、三人间三种。同时,必须满足以下条件:(1)安排这7名学生的宿舍不能安排其他学生,并且必须满员,例如,三人间必须住满3人。(
下列哪项有利于室性心动过速与室上性心动过速的鉴别
EDI是按照统一规定的一套能用标准格式,将标准的经济信息通过通信网络传输在贸易伙伴的电子计算机系统之间进行数据交换和自动处理。
用换元法解方程=3时,下列换元方法中最适宜的是()
李某到云南大理打工时与贾某相识,贾某要求李某帮忙带一样东西到昆明,李某表示同意。贾某于是把自己买的750克鸦片用塑料膜包成条状,使其减少鸦片气味,然后装入用毛巾缝的袋子里,让李某系在腰上带上火车。李某问是什么东西,贾某说:“别多问,带到就行了。”李某在携带
甲地在乙地正东5公里,某天早上7点30分,小赵从乙地出发,以每小时15公里的速度骑车前往甲地找小张,但在小赵出发的同时,小张也出发以每小时9公里的速度向正北方向跑步锻炼。小赵到甲地后立刻沿小张跑步的路径以每小时12公里的速度追小张,追上小张后,两人以每小时
【八股文】
以下叙述中正确的是
以下关于宏的叙述中,错误的是
Listentotheinterviewbetweenawomanandaman,aboutanewandeffectivewayoforganizingone’sthoughts,whichismindmap
最新回复
(
0
)