摘要:本文主要向大家介绍C/C++知识点之【C语言】 字符串的内存拷贝处理函数了,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍C/C++知识点之【C语言】 字符串的内存拷贝处理函数了,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
这篇博文我主要是想写一下函数库中的memcpy函数, 对于字符串来说,我们运用字符串
{
char *pstr = (char *)str;
char *pDstr = (char *)Dstr;
assert((str!=NULL) && (Dstr != NULL));
if(str == Dstr)
//位置相同情况下直接返回需要改变的
return (char *)Dstr;
while(count-- > 0)
{
*pstr++ = *pDstr++;
}
return str;
} 然后会出现一个问题,如果我们拷贝的数据中Dstr的起始位置在STR操作之间,那么在改变str时会出现副作用,将导致我们的拷贝结果不正确,所以我们应该考虑到会覆盖的情况。在函数库中有一个memmove函数。memmove: void *my_memmove(void *pst,const void *Dpst,int size)
{
void *p = pst;
char *pstA = (char *)pst;
char *pstB = (char *)Dpst;
assert((pst != NULL) &&(Dpst != NULL));
if(pstB<pstA< pstB+size)
{
while(size--)
{
*(pstA+size) = *(pstB+size);
}
}
else
{
while(size--)
{
*pstA++ = *pstB++;
}
}
return p;
}就是遇到被拷贝的空间起始处在拷贝空间中,将会遇到拷贝内存覆盖的现象。在这种情况下我们将考虑从尾部进行拷贝。所以进行了判断。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号