strcpy、strncpy、memcpy 的区别
strcpy
- 描述
- 实现
char *myStrcpy(char* dest, const char* src){
if ((NULL == dest) || (NULL == src)){
return NULL;
}
char *strDest = dest;
const char *strSrc = src;
while ((*dest++ = *strSrc++) != '\0');
return strDest;
}
strncpy
- 描述
- 将一个字符串的前 count 字节复制到另一个字符串中
- 实现
char* strncpy(char* dest, const char* source, size_t count){
if (NULL == dest || NULL == source || count <= 0){
return NULL;
}
char *start = dest;
while (count && (*dest++ = *source++)){
count--;
}
if (count){
while(--count){
*dest ++ = '\0';
}
}
return (start);
}
memcpy
- 描述
- 实现
void *myMemcpy(void *dest, const void *src, size_t size){
if(NULL == dest || NULL == src){
return NULL;
}
char *pDest = NULL;
char *pSrc = NULL;
if ((src < dest) && ((char*)src + size > (char*)dest)){
pDest = (char *)dest + size - 1;
pSrc = (char *)src + size - 1;
while(size--){
*pDest-- = *pSrc--;
}
}
else{
pSrc = (char *)src;
pDest = (char *)dest;
while (size--)
{
*pDest++ = *pSrc;
}
}
return dest;
}
区别
- strcpy 遇到空字符串复制操作停止
- strncpy 复制指定数量的字符
- memcpy 复制指定内存字节
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2019-10-23 03-树2 List Leaves (25 分)