【c语言】memcpy增强版(带有memmove功能)

// 若在同一块内存中拷贝,有可能实现内存重叠,为了处理这种情况,有了增强版的memcpy,与memmov功能相似//不怕内存重叠的memcpy#include < stdio.h>#include < assert.h>void * my_memmov( void * dst, void const * src, int count ){void * ret = dst;assert( ( dst != NULL ) && ( src != NULL ) );//判断是否会发生内存重叠,若不发生,,则执行memcpy就好if( ( ( char * )dst < ( char * )src ) || ( ( char * )dst >= ( char * )src + count ) ){while( count– ){*( ( char * )dst ) = *( ( char * )src );( ( char * )dst )++;( ( char * )src )++;}return ret;}//若发生了内存重叠,那么就从后往前移else{while( count ){char *pdst = (char *)dst+count-1;char *psrc = (char *)src+count-1;*(pdst) = *(psrc);count–;}return ret;}return ret;}int main(){int i;int p[10] = {1,2,3,4,5,6,7,8,9};my_memmov( p+3,p,20 );for( i = 0; i < sizeof(p) / sizeof( p[0] ); i++ ){printf("%d ",p[i]);}return 0;}

无论身处何处,只要有一颗放松而美好的心态,生活便是美好!

【c语言】memcpy增强版(带有memmove功能)

相关文章:

你感兴趣的文章:

标签云: