字符串拷贝(不考虑内存重叠)
char* myStrcpy(char* destStr,const char* str)
{
//字符串有有效性检查,assert断言返回false则中止程序运行
assert(destStr != NULL || str != NULL);
char* temp = destStr;
//while((*destStr++ = *str++) !='\0');
//将str赋值给destStr,判断destStr !='\0',条件成立则说明字符串拷贝结束(字符串以'\0'结尾)
while((*destStr = *str) !='\0')
{
str++;
destStr++;
}
return temp;
}
字符串拷贝(内存重叠)
1.destStr 指向拷贝后的字符串
2. str 指向原字符串
3.cnt 字符串长度
char* myStrcpy(char* destStr,const char* str,int cnt)
{
//字符串有有效性检查,assert断言返回false则中止程序运行
assert(destStr != NULL || str != NULL);
char* temp = destStr;
if (destStr>= str&& destStr<= str+cnt-1) //内存重叠,从高地址开始复制
{
destStr= destStr+cnt-1;
str= str+cnt-1;
while (cnt--)
*destStr-- = *str--;
}
else //正常情况,从低地址开始复制
{
while (cnt--)
*destStr++ = *str++;
}
return temp;
}