memmove ( )【C语言库函数源代码】

来源:互联网 发布:安卓上传图片 php 编辑:程序博客网 时间:2024/04/30 02:48

C语言库函数源代码】

【本程序在Dev C++ 4.9.9.2 下编译通过】

/*

   memmove() copies a source memory buffer to a destination memory buffer.This routine recognize overlapping buffers to avoid propogation.For cases where propagation is not a problem, memcpy() can be used.

   memmove()由src所指定的内存区域赋值count个字符到dst所指定的内存区域。src和dst所指内存区域可以重叠,但复制后src的内容会被更改。函数返回指向dst的指针。

*/

void * my_memmove(void * dst,const void * src,int count)

{

   void * ret = dst;

   if (dst <= src || (char *)dst >= ((char *)src + count))

   {

      while (count--)

      {

        *(char *)dst = *(char *)src;

            dst = (char *)dst + 1;

            src = (char *)src + 1;

        }

   }

   else

   {

      dst = (char *)dst + count - 1;

      src = (char *)src + count - 1;

      while (count--)

      {

        *(char *)dst = *(char *)src;

        dst = (char *)dst - 1;

        src = (char *)src - 1;

      }

   }

   return(ret);

}

int main()

{

   char a[12];

   puts((char *)my_memmove(a,"ammana_babi",16));

   system("pause");

   return 0;

}
原创粉丝点击