字符串拷贝(不考虑内存重叠)
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;
}
博客围绕字符串拷贝展开,分别介绍了不考虑内存重叠和考虑内存重叠两种情况的字符串拷贝。涉及 destStr 指向拷贝后的字符串、str 指向原字符串以及 cnt 表示字符串长度等关键信息。
609

被折叠的 条评论
为什么被折叠?



