1.编写一个strcpy函数。
strcpy函数: 后面的字符串会拷贝到一个字符数组中,要求拷贝好的字符串在字符数组的首地址,并且只拷贝到'\0'的位置,原型是
char * my_strcpy(char * dest,char * src)
#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<cstring>
#include<assert.h>
using namespace std;
char * my_strcpy(char * dest,const char *src)
{
//注意细节
//判断是否为空 为空直接抛出异常
assert(dest!=NULL&&src!=NULL);
//判断是否为自我复制
if(dest==src) return dest;
char * p=dest; //存储目标数组起点地址
while(*src!='\0')
{
*dest=*src;
++dest;
++src;
}
*dest='\0';
return p;//支持链式表达式
}
int main()
{
const char * t= "hello";
char *f = new char [50];
my_strcpy(f,t);
cout<<f<<endl;
return 0;
}
2.1.编写一个strcat函数,请编写一个函数将字符串s2添加到字符串s1的末端,函数不受s1、s2空间大小的限制。
#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<cstring>
#include<assert.h>
using namespace std;
//参数加入了const
char * my_strcat(char * dest,const char * src)
{
//加入判空
assert(dest!=NULL&&src!=NULL);
char * p =dest;
//找到dest串结束符的位置
while(*dest!='\0')
++dest;
while(*src!='\0')
{
*dest=*src;
++dest;++src;
}
//加入串结束符
*dest = '\0';
return p;
}
int main()
{
char t[8]="hello";
const char * d ="ttt";
my_strcat(t,d);
cout<<t<<endl;
return 0;
}