string.hのmemmove的实现

函数原型

void *memmove( void* dest, const void* src,size_t count );

 功能

由st2指内存区域复制n个字节到st1所指内存区域   (抄至百度百科)

返回值

函数返回st1值

包含头文件

string.h

函数的使用

#include<stdio.h>

#include<string.h>

int main(void)

{

  char str[12];

  memmove(str,"hello world",12);

  printf("%s\n",str);

  return 0;

}

函数的实现

void *memmove(void *st1,const void *st2,size_t n)

{

  char *str1_t=(char *)st1;

  const char *str2_t=(char *)st2;

  if(str2_t > str1_t)

  {

     while(0<n)

     {

        *str1_t++=str2_t++;

        --n;

      }

   }else

   if(str2_t < str1_t)  /*如果源地址小于目标地址,则执行反向拷贝*/

   {

      str1_t = str1_t+n-1;
        str2_t = str2_t+n-1;

      while(0<n)
        {
          *str1_t-- = *str2_t--;
          --n;
        }

    }

  return st1;

}

posted @ 2013-03-31 10:08  Sinnerse  阅读(136)  评论(0编辑  收藏  举报