#include
#include
using namespace std;
void creat(char * & rp, const char *str);
void cat(char * & rp, const char *str);
void cpy(char * & rp, const char *str);
int main()
{
char *p=NULL;
cout<<"以字符串1234为初值创建动态字符数组p"<<endl;
creat(p,"1234" ); //调用自定义函数creat,创建动态字符数组p,初始化信息为"1234"
cout<<"p="<<p<<endl; //输出p中保存的字符串信息
cout<<"strlen(p)="<<strlen(p)<<endl; //输出p中保存的字符串长度
cout<<endl;
cout<<"以字符串abcde为初值再次创建动态字符数组p"<<endl;
creat(p, "abcde"); //动态字符数组p已经创建,再次创建会报错,然后终止creat函数调用
cout<<"p="<<p<<endl; //输出p中保存的字符串信息
cout<<"strlen(p)="<<strlen(p)<<endl; //输出p中保存的字符串长度
cout<<endl;
cout<<"字符串0123456789012345789连接到p中保存的字符串的后面"<<endl;
cat(p, "01234567890123456789"); //调用自定义函数cat,将字符串"01234567890123456789"连接到动态数组p中保存的字符串的后面
cout<<"p="<<p<<endl; //输出p中保存的字符串信息
cout<<"strlen(p)="<<strlen(p)<<endl; //输出p中保存的字符串长度
cout<<endl;
cout<<"字符串01234567890123456789复制到p中"<<endl;
cpy(p,"01234567890123456789"); //调用自定义函数cpy,将字符串"01234567890123456789"复制到动态数组p中
cout<<"p="<<p<<endl; //输出p中保存的字符串信息
cout<<"strlen(p)="<<strlen(p)<<endl; //输出p中保存的字符串长度
cout<<endl;
return 0;
}
void creat(char * & rp,const char *str)
{
if(rp!=NULL)
cout<<"该动态数组已经创建,不能重复创建,创建操作调用失败!"<<endl;
else
{
int len; //变量len将保存形参变量str中指向的字符串的长度
len=strlen(str); //循环体语句为空,变量len直接递增至字符串的长度值
rp=new char[len+1];
if(rp==NULL)
{
cout<<"内存空间不足,调用失败!"<<endl;
return; //退出f的调用
}
strcpy(rp,str);
}
}
void cat(char * & rp, const char *str)
{
strcat(rp, str);
}
void cpy(char * & rp, const char *str)
{
strcpy(rp, str);
}
strcat 需要目标的内存足够大,你这边应该不够,超出边界了。