tieto字符串拷贝

来源:互联网 发布:java ee高级架构师 编辑:程序博客网 时间:2024/06/13 13:45

  C实现内存拷贝以及字符串拷贝函数(摘) 收藏
 
#i nclude <stdio.h>
#i nclude <stdlib.h>
#i nclude <string.h>

void * memmove_kk(void * dest,const void *src,size_t count);
char * strcpy_kk( char *strDest, const char *strSrc ) ;

int main(void)
{
 char message2[60]="abcdefghijklmnopqrstuvwxyz";
 char temp[60];


 strcpy_kk(temp,message2);
 printf("\nOriginal message: %s",temp);
 memmove_kk(temp+6,temp+4,10);
 printf("\nAfter memmove_kk() with overlap message: \t%s\n",temp);
 return 0;
}

 void * memmove_kk(void * dest,const void *src,size_t count)
{
    char *tmp, *s;
/*如果目标地址小于源地址的话,从头开始拷贝*/
    if (dest <= src) {
        tmp = (char *) dest;
        s = (char *) src;
        while (count--)
            *tmp++ = *s++;
        }         
/*如果目标地址大于源地址的话,从尾部往前拷贝,这样就避免了当内存重叠时导致拷贝出错*/
    else {
        tmp = (char *) dest + count;
        s = (char *) src + count;
        while (count--)
            *--tmp = *--s;
        }
    return dest;
}


char * strcpy_kk(char *strDest, const char *strSrc)
{
 char *address = strDest;
 //assert( (strDest != NULL) && (strSrc != NULL) );
  while( *strDest++ = * strSrc++ );
  return address;
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hongjiujing/archive/2008/01/03/2022937.aspx

原创粉丝点击