今天source review,看到别人的c程序中的memcpy,就不由自主的看看写的如何。
当我看到memcpy(a,b,strlen(a));
我以为我发现了,其实是我错了。
这个地方就是需要复制的字符数,不包括‘/0‘
另附
当我看到memcpy(a,b,strlen(a));
我以为我发现了,其实是我错了。
这个地方就是需要复制的字符数,不包括‘/0‘
另附
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
assert((pvTo != NULL) && (pvFrom != NULL)); // 使用断言
byte *pbTo = (byte *) pvTo; // 防止改变pvTo的地址
byte *pbFrom = (byte *) pvFrom; // 防止改变pvFrom的地址
while(size -- > 0 )
*pbTo ++ = *pbFrom ++ ;
return pvTo;
}
本文通过一次源代码审查中遇到的memcpy用法实例,详细解释了memcpy函数的正确使用方式,特别是针对复制字符串时strlen参数的理解,并给出了一个简单的实现。
1万+

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



