这两个函数在面试中,经常会让大家写,今天随手写了一下,也没考虑太多细节,有问题的,后面再修改。
#include <iostream>
using namespace std;
//不能使用引用,因为src以及dest变量在程序中的值都会改变
bool _strcpy(char *dest,const char *src)
{
//判断源字符串或者目标字符串是否为空
if(src == NULL || dest == NULL)
return false;
//判断是否内存重叠
if((dest > src) && (dest < strlen(src) + src))
return false;
//拷贝字符串
while((*dest++ = *src++) != '\0');
return true;
}
//字符串连接函数
char *_strcat(const char * str1,const char *str2)
{
char *result = new char[strlen(str1)+strlen(str2)+1];
_strcpy(result,str1);
_strcpy(result+strlen(str1),str2);
return result;
}
int main()
{
char *source = "xidian university";
char *dest = new char[strlen(source)+1];
//char *dest = source + 5; //错误,内存重叠
if(_strcpy(dest,source))
{
cout<<dest<<endl;
}
else
cout<<"failed !!"<<endl;
cout<<_strcat(source,dest)<<endl;
system("pause");
return 1;
}