经典C语言模拟字符串库操作

来源:互联网 发布:光电效应实验报告数据 编辑:程序博客网 时间:2024/06/10 14:33

1.模拟strcpy(字符串拷贝函数)

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. char *my_strcpy(char *dest,const char *src)  
  7. {  
  8.    char *pc=dest;  
  9.    assert(src);  
  10.    assert(dest);  
  11.    while(*dest++ = *src++)  
  12.    {  
  13.       ;  
  14.    }  
  15.    return pc;  
  16. }  
  17. int main()  
  18. {  
  19.    char *pa="abcdef";  
  20.    char pb[10]={0};  
  21.    my_strcpy(pb,pa);  
  22.    printf("%s\n",pb);  
  23.    system("pause");  
  24.    return 0;  
  25. }  

strncpy:

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. char *my_strncpy(char *dest,const char *src,size_t n)  
  7. {  
  8.    char *ret=dest;  
  9.    assert(src);  
  10.    assert(dest);  
  11.    while(n--)  
  12.    {  
  13.        *ret++=*src++;  
  14.    }  
  15.    *ret='\0';//拷贝'\0'  
  16.    return dest;  
  17. }  
  18. int main()  
  19. {  
  20.     int num = 0;  
  21.     char pa[]="abcdefgh";  
  22.     char pb[20]={0};  
  23.     char *ret=NULL;  
  24.     printf("请输入你要拷贝字符的个数:");  
  25.     scanf("%d",&num);  
  26.     ret=my_strncpy(pb,pa,num);  
  27.     printf("%s\n",ret);  
  28.     system("pause");  
  29.     return 0;  
  30. }  



2.模拟strlen(求取字符串长度)

[cpp] view plain copy
  1. //普通实现  
[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. int my_strlen(const char *src)  
  7. {  
  8.    int count=0;  
  9.    assert(src);  
  10.    while(*src++)  
  11.    {  
  12.       count++;  
  13.    }  
  14.    return count;  
  15. }  
  16. int main()  
  17. {  
  18.    int ret=0;  
  19.    char *pa="abcdefgh";  
  20.    ret=my_strlen(pa);  
  21.    printf("所求字符串的长度为:%d\n",ret);  
  22.    system("pause");  
  23.    return 0;  
  24. }  


[cpp] view plain copy
  1. //指针实现  
  2. #define _CRT_SECURE_NO_WARNINGS 1  
  3. #include<stdio.h>  
  4. #include<stdlib.h>  
  5.   
  6. int my_strlen(const char *str)  
  7. {  
  8.     char *tmp=str;  
  9.     while(*tmp++)  
  10.     {  
  11.         ;  
  12.     }  
  13.     return tmp-str-1;  
  14. }  
  15. int main()  
  16. {  
  17.     char *pa="abcdefgh";  
  18.     int ret = my_strlen(pa);  
  19.     printf("%d\n",ret);  
  20.     system("pause");  
  21.     return 0;  
  22. }  


[cpp] view plain copy
  1. //递归实现  
  2. #define _CRT_SECURE_NO_WARNINGS 1  
  3. #include<stdio.h>  
  4. #include<stdlib.h>  
  5.   
  6. int my_strlen(const char *str)  
  7. {  
  8.     if(!*str)  
  9.         return 0;  
  10.     else  
  11.         return 1+my_strlen(str+1);  
  12. }  
  13. int main()  
  14. {  
  15.     char *pa="abcdefgh";  
  16.     int ret = my_strlen(pa);  
  17.     printf("%d\n",ret);  
  18.     system("pause");  
  19.     return 0;  
  20. }  


3.模拟strstr(在所给字符串中查找子串第一次出现的位置)

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. char *my_strstr(const char *str,const char *dest)  
  8. {  
  9.    char *tmp=NULL;  
  10.    const char *string1=str;  
  11.    const char *string2=dest;  
  12.    assert(str);  
  13.    assert(dest);  
  14.    if(!*string2)  
  15.    {  
  16.        return (char *)string1;  
  17.    }  
  18.    while(*string1)  
  19.    {  
  20.        tmp=(char *)string1;  
  21.        while(*string1 && *string2 && *string1==*string2)  
  22.        {  
  23.            string1++;  
  24.            string2++;  
  25.        }  
  26.        if(!*string2)  
  27.        {  
  28.            return (char *)tmp;  
  29.        }  
  30.        string1++;  
  31.    }  
  32.    return NULL;  
  33. }  
  34. int main()  
  35. {  
  36.    int result=0;  
  37.    char *pa="abcdef";  
  38.    char *pb="cde";  
  39.    char *ret=my_strstr(pa,pb);  
  40.    result=ret-pa+1;  
  41.    if(NULL != ret)  
  42.    {  
  43.       printf("%s found at position %d\n",pb,result);  
  44.    }  
  45.    else  
  46.    {  
  47.       printf("%s not found\n",pb);  
  48.    }  
  49.      
  50.    system("pause");  
  51.    return 0;  
  52. }  

[cpp] view plain copy
  1. <span style="font-size:14px;">#define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. char *my_strstr(const char *dest,const char *src)  
  8. {  
  9.     const char *tmp = NULL;  
  10.     assert(dest);  
  11.     assert(src);  
  12.     while(*dest && *src)  
  13.     {  
  14.         tmp=src;  
  15.         while(*src && *dest==*src)  
  16.         {  
  17.             src++;  
  18.             dest++;  
  19.         }  
  20.         if(!*dest)  
  21.         {  
  22.             return (char*)tmp;  
  23.         }  
  24.         src++;  
  25.     }         
  26.     return NULL;  
  27. }  
  28. int main()  
  29. {  
  30.     char *pa = "adcbdcdcbef";  
  31.     char *pb = "dcb";  
  32.     char *ret = my_strstr(pb,pa);  
  33.     if(ret!=NULL)  
  34.     {  
  35.         printf("%s\n",ret);  
  36.     }  
  37.     else  
  38.     {  
  39.         printf("没找到该子串\n");  
  40.     }  
  41.     system("pause");  
  42.     return 0;  
  43. }</span><span style="font-size: 24px;">  
  44. </span>  

strrstr:库中没有该函数,仿照strchrr实现(在所给字符串中查找子串最后一次出现的位置

[cpp] view plain copy
  1. <span style="font-size:14px;">#define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. char *my_strrstr(const char *dest,const char *src)  
  8. {  
  9.     const char *psrc = NULL;  
  10.     const char *pdest = dest;  
  11.     const char *tmp = NULL;  
  12.     assert(dest);  
  13.     assert(src);  
  14.     while(*src)  
  15.     {  
  16.         psrc=src;  
  17.         while(*src && *dest==*src)  
  18.         {  
  19.             src++;  
  20.             dest++;  
  21.         }  
  22.         if(*dest == '\0')  
  23.         {  
  24.             tmp=psrc;  
  25.         }  
  26.         src=psrc;  
  27.         dest=pdest;  
  28.         src++;  
  29.     }  
  30.     if(tmp!=NULL)  
  31.     {  
  32.         return (char *)tmp;  
  33.     }  
  34.     return NULL;  
  35. }  
  36. int main()  
  37. {  
  38.     char *pa = "adcbdcb";  
  39.     char *pb = "dcb";  
  40.     char *ret = my_strrstr(pb,pa);  
  41.     if(ret!=NULL)  
  42.     {  
  43.         printf("%s\n",ret);  
  44.     }  
  45.     else  
  46.     {  
  47.         printf("没找到该子串\n");  
  48.     }  
  49.     system("pause");  
  50.     return 0;  
  51. }</span>  


4.strcat(字符串连接)

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. char *my_strcat(char *dest,const char *src)  
  7. {  
  8.     char *tmp=dest;  
  9.   assert(dest);  
  10.     if(!*src)  
  11.     {  
  12.         return tmp;  
  13.     }  
  14.     while(*tmp)  
  15.     {  
  16.         tmp++;  
  17.     }  
  18.     while(*tmp++ = *src++)  
  19.     {  
  20.         ;  
  21.     }  
  22.     return dest;  
  23. }  
  24. int main()  
  25. {  
  26.    char *pa="efgh";  
  27.    char pb[20]="abcd";  
  28.    my_strcat(pb,pa);  
  29.    printf("%s\n",pb);  
  30.    system("pause");  
  31.    return 0;  
  32. }  


[cpp] view plain copy
  1. <span style="font-size:14px;">#define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. char *my_strstr(const char *dest,const char *src)  
  8. {  
  9.     const char *tmp = NULL;  
  10.     assert(dest);  
  11.     assert(src);  
  12.     while(*dest && *src)  
  13.     {  
  14.         tmp=src;  
  15.         while(*src && *dest==*src)  
  16.         {  
  17.             src++;  
  18.             dest++;  
  19.         }  
  20.         if(!*dest)  
  21.         {  
  22.             return (char*)tmp;  
  23.         }  
  24.         src++;  
  25.     }         
  26.     return NULL;  
  27. }  
  28. char *my_strrstr(const char *dest,const char *src)  
  29. {  
  30.     const char *tmp = NULL;  
  31.     const char *psrc=NULL;  
  32.     const char *pdest=dest;  
  33.     assert(dest);  
  34.     assert(src);  
  35.     while(*src)  
  36.     {  
  37.         tmp = my_strstr(pdest,src);  
  38.         if(tmp!=NULL)  
  39.         {  
  40.             psrc=tmp;  
  41.             src=tmp;  
  42.         }  
  43.         src++;  
  44.     }  
  45.     if(psrc!=NULL)  
  46.     {  
  47.         return (char *)psrc;  
  48.     }  
  49.     return NULL;  
  50. }  
  51. int main()  
  52. {  
  53.     char *pa = "adcbdcb";  
  54.     char *pb = "dcb";  
  55.     char *ret = my_strrstr(pb,pa);  
  56.     if(ret!=NULL)  
  57.     {  
  58.         printf("%s\n",ret);  
  59.     }  
  60.     else  
  61.     {  
  62.         printf("没找到该子串\n");  
  63.     }  
  64.     system("pause");  
  65.     return 0;  
  66. }  
  67. </span>  


strncat:

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. char *my_strncat(char *dest,const char *src,size_t n)  
  7. {  
  8.    char *ret=dest;  
  9.    assert(src);  
  10.    assert(dest);  
  11.    while(*ret)  
  12.    {  
  13.        ret++;  
  14.    }  
  15.    while(n--)  
  16.    {  
  17.        *ret++=*src++;  
  18.    }  
  19.    *ret='\0';//追加'\0'  
  20.    return dest;  
  21. }  
  22. int main()  
  23. {  
  24.     int num = 0;  
  25.     char pa[20]="abcd";  
  26.     char pb[]="efgghhh";  
  27.     char *ret=NULL;  
  28.     printf("请输入你要追加字符的个数:");  
  29.     scanf("%d",&num);  
  30.     ret=my_strncat(pa,pb,num);  
  31.     printf("%s\n",ret);  
  32.     system("pause");  
  33.     return 0;  
  34. }  


[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5. #include<string.h>  
  6.   
  7.   
  8. char *my_strrstr(const char *dest,const char *src)//从后向前查找  
  9. {  
  10.     int len1=strlen(src);  
  11.     int len2=strlen(dest);  
  12.     const char*psrc=src;  
  13.     assert(dest);  
  14.     assert(src);  
  15.     while(src+len1-1>src)  
  16.     {  
  17.         while(*psrc)//先找到最后位置  
  18.         {  
  19.             psrc++;  
  20.         }  
  21.         while(*dest)//先找到最后位置  
  22.         {  
  23.             dest++;  
  24.         }  
  25.         while(--len1 && --len2 && *dest==*psrc)  
  26.         {  
  27.             dest--;  
  28.             psrc--;  
  29.         }  
  30.         if(len2==0)  
  31.             return (char*)psrc-1;  
  32.     }  
  33.     return NULL;  
  34. }  
  35. int main()  
  36. {  
  37.     char *pa = "adcbdcb";  
  38.     char *pb = "dcb";  
  39.     char *ret = my_strrstr(pb,pa);  
  40.     if(ret!=NULL)  
  41.     {  
  42.         printf("%s\n",ret);  
  43.     }  
  44.     else  
  45.     {  
  46.         printf("没找到该子串\n");  
  47.     }  
  48.     system("pause");  
  49.     return 0;  
  50. }  


5.strchr(在字符串中查找某个字符首次出现的位置)

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. char *my_strchr(const char *src,int ch)  
  7. {  
  8.     char *tmp=(char *)src;  
  9.         assert(src);  
  10.     while(*tmp++)  
  11.     {  
  12.         src=tmp;  
  13.         if(*tmp == ch)  
  14.         {  
  15.             return (char *)src;  
  16.         }  
  17.     }  
  18.     return NULL;  
  19. }  
  20. int main()  
  21. {  
  22.    int ch='c';  
  23.    char *pa="abcdef";  
  24.    char *ret=my_strchr(pa,ch);  
  25.    int result=ret-pa+1;  
  26.    if(ret != NULL)  
  27.    {  
  28.        printf("Result:\tfirst %c found at position %d\n\n", ch, result);  
  29.    }  
  30.    else  
  31.    {  
  32.        printf("Result:\t%c not found\n",ch);  
  33.    }  
  34.    system("pause");  
  35.    return 0;  
  36. }  

strrchr(在字符串中查找某个字符最后一次出现的位置)


[cpp] view plain copy
  1. <span style="font-size:18px;"><span style="font-size: 24px;">//从后向前找</span>  
  2. </span>  
[cpp] view plain copy
  1. <span style="font-size:14px;">#define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. char *my_strrchr(const char *str,int ch)  
  8. {  
  9.     const char *tmp = str;  
  10.     assert(str);  
  11.     while(*str++)  
  12.     {  
  13.         ;  
  14.     }  
  15.     while(--str>tmp)  
  16.     {  
  17.         if(*str == ch)  
  18.             return (char *)str;  
  19.     }  
  20.     return NULL;  
  21. }  
  22. int main()  
  23. {  
  24.     char *pa = "adbdcdef";  
  25.     char *ret = my_strrchr(pa,'d');  
  26.   if(ret!=NULL)  
  27.     {  
  28.         printf("%s\n",ret);  
  29.     }  
  30.     else  
  31.     {  
  32.         printf("没找到该字符\n");  
  33.     }  
  34.     system("pause");  
  35.     return 0;  
  36. }</span>  


[cpp] view plain copy
  1. //每次找到指定字符,先保存起来,最后返回该字符所在地址  
  2. #define _CRT_SECURE_NO_WARNINGS 1  
  3. #include<stdio.h>  
  4. #include<stdlib.h>  
  5. #include<assert.h>  
  6.   
  7.   
  8. char *my_strrchr(const char *str,int ch)  
  9. {  
  10.     const char *tmp = NULL;  
  11.     assert(str);  
  12.     while(*str)  
  13.     {  
  14.         if(*str==ch)  
  15.             tmp=str;  
  16.         str++;  
  17.     }  
  18.     if(tmp!=NULL)  
  19.         return (char*)tmp;  
  20.     return NULL;  
  21. }  
  22. int main()  
  23. {  
  24.     char *pa = "adcbdcdef";  
  25.     char *ret = my_strrchr(pa,'g');  
  26.     if(ret!=NULL)  
  27.     {  
  28.         printf("%s\n",ret);  
  29.     }  
  30.     else  
  31.     {  
  32.         printf("没找到该字符\n");  
  33.     }  
  34.     system("pause");  
  35.     return 0;  
  36. }  


[cpp] view plain copy
  1. //通过strchr实现  
  2. #define _CRT_SECURE_NO_WARNINGS 1  
  3. #include<stdio.h>  
  4. #include<stdlib.h>  
  5. #include<assert.h>  
  6.   
  7.   
  8. char *my_strchr(const char *str,int ch)  
  9. {  
  10.     assert(str);  
  11.     while(*str)  
  12.     {  
  13.         if(*str == ch)  
  14.             return (char*)str;  
  15.         str++;  
  16.     }  
  17.     return NULL;  
  18. }  
  19. char *my_strrchr(const char *str,int ch)  
  20. {  
  21.     char *tmp = NULL;  
  22.     assert(str);  
  23.     while(*str)  
  24.     {  
  25.         if(*str == ch)  
  26.         tmp = my_strchr(str,ch);  
  27.         str++;  
  28.     }  
  29.     if(tmp!=0)  
  30.         return (char*)tmp;  
  31.     return NULL;  
  32. }  
  33. int main()  
  34. {  
  35.     char *pa = "adcbdcdef";  
  36.     char *ret = my_strrchr(pa,'d');  
  37.     if(ret!=NULL)  
  38.     {  
  39.         printf("%s\n",ret);  
  40.     }  
  41.     else  
  42.     {  
  43.         printf("没找到该字符\n");  
  44.     }  
  45.     system("pause");  
  46.     return 0;  
  47. }  

6.strcmp(字符串比较)

实现1:

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. int my_strcmp(const char *str1,const char *str2)  
  8. {  
  9.     assert(1);  
  10.     assert(2);  
  11.     while(*str1 && *str2==*str1)  
  12.     {  
  13.         str1++;  
  14.         str2++;  
  15.     }  
  16.     return *str1-*str2;  
  17. }  
  18.   
  19. int main()  
  20. {  
  21.     char *pa="abczef";  
  22.     char *pb="abcfgjdh";  
  23.     int ret=my_strcmp(pa,pb);  
  24.     if(ret>0)  
  25.     {  
  26.        printf("%s greater than %s\n",pa,pb);  
  27.     }  
  28.     else if(ret==0)  
  29.     {  
  30.        printf("%s eaqul to %s\n",pa,pb);  
  31.     }  
  32.     else  
  33.     {  
  34.        printf("%s less than %s\n",pa,pb);  
  35.     }  
  36.     system("pause");  
  37.     return 0;  
  38. }  


实现2:
[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6.   
  7. int my_strcmp(const char *str1,const char *str2)  
  8. {  
  9.     int ret = 0;  
  10.         assert(1);  
  11.     assert(2);  
  12.     while(!(ret=*(unsigned char *)str1-*(unsigned char *)str2) && *str2)  
  13.     {  
  14.             ++str1;  
  15.         ++str2;  
  16.     }  
  17.     if(ret<0)  
  18.     {  
  19.         return -1;  
  20.     }  
  21.     else if(ret>0)  
  22.     {  
  23.         return 1;  
  24.     }  
  25.     return ret;  
  26. }  
  27.   
  28. int main()  
  29. {  
  30.         char *pa="abcdef";  
  31.     char *pb="abcfgjdh";  
  32.     int ret=my_strcmp(pa,pb);  
  33.     if(ret>0)  
  34.     {  
  35.        printf("%s greater than %s\n",pa,pb);  
  36.     }  
  37.     else if(ret==0)  
  38.     {  
  39.        printf("%s eaqul to %s\n",pa,pb);  
  40.     }  
  41.     else  
  42.     {  
  43.        printf("%s less than %s\n",pa,pb);  
  44.     }  
  45.     system("pause");  
  46.     return 0;  
  47. }  

strncmp:

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. int my_strncmp(const char *str1,const char *str2,size_t n)  
  7. {  
  8.    assert(str1);  
  9.    assert(str2);  
  10.   while(--n)  
  11.   {  
  12.       *str1++ == *str2++;  
  13.   }  
  14.   return (*str1-*str2);  
  15. }  
  16. int main()  
  17. {  
  18.     int num = 0;  
  19.     int ret = 0;  
  20.     char *pa="abcd";  
  21.     char *pb="abcf";  
  22.     printf("请输入你要比较字符的个数:");  
  23.     scanf("%d",&num);  
  24.     ret=my_strncmp(pa,pb,num);  
  25.     if(ret>0)  
  26.     {  
  27.        printf("%s greater than %s\n",pa,pb);  
  28.     }  
  29.     else if(ret==0)  
  30.     {  
  31.        printf("%s eaqul to %s\n",pa,pb);  
  32.     }  
  33.     else  
  34.     {  
  35.        printf("%s less than %s\n",pa,pb);  
  36.     }  
  37.     system("pause");  
  38.     return 0;  
  39. }  

7.memcpy:内存拷贝函数(两块内存不关联)

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. void *my_memcpy(void *dest,const void *src,size_t n)  
  7. {  
  8.     char *pdest=(char *)dest;  
  9.     const char *psrc=(const char *)src;  
  10.   assert(dest);  
  11.     assert(src);  
  12.     while(n--)  
  13.     {  
  14.         *pdest++=*psrc++;  
  15.     }  
  16.     return dest;  
  17. }  
  18. int main()  
  19. {  
  20.     int i = 0;  
  21.   int arr1[20]={0};  
  22.     int arr2[]={1,2,3,4,5,6,7,8,9,0};  
  23.     int sz = sizeof(arr2)/sizeof(arr2[0]);  
  24.     my_memcpy(arr1,arr2,sz);  
  25.         for(i=0; i<sizeof(arr2)/sizeof(arr2[0]); i++)  
  26.     {  
  27.         printf("%d ",arr2[i]);  
  28.     }  
  29.     system("pause");  
  30.     return 0;  
  31. }  
memmove:(两块内存有关联)

[cpp] view plain copy
  1. #define _CRT_SECURE_NO_WARNINGS 1  
  2. #include<stdio.h>  
  3. #include<stdlib.h>  
  4. #include<assert.h>  
  5.   
  6. void *my_memmove(void *dest,const void *src,size_t n)  
  7. {  
  8.     char *pdest=(char *)dest;  
  9.     const char *psrc=(char *)src;  
  10.     assert(dest);  
  11.     assert(src);  
  12.     if(psrc+n>pdest && pdest>psrc)//从后向前拷贝  
  13.     {  
  14.         while(n--)  
  15.         {  
  16.             *(pdest+n)=*(psrc+n);  
  17.         }  
  18.     }  
  19.     else//从前向后拷贝  
  20.     {  
  21.          while(n--)  
  22.          {  
  23.              *pdest++=*psrc++;    
  24.          }  
  25.     }  
  26.     return dest;  
  27. }  
  28. int main()  
  29. {  
  30.     int i = 0;  
  31.     int num = 0;  
  32.     int arr2[]={1,2,3,4,5,6,7,8,9,0};   
  33.     printf("请输入你要拷贝内存的大小:");  
  34.     scanf("%d",&num);  
  35.         my_memmove(arr2+3,arr2+1,num*sizeof(int));  
  36.     for(i=0; i<sizeof(arr2)/sizeof(arr2[0]); i++)  
  37.     {  
  38.         printf("%d ",arr2[i]);  
  39.     }  
  40.     printf("\n");  
  41.     system("pause");  
  42.     return 0;  
  43. }