C和指针之memmove函数 memcpy函数 strcspn函数 strspn函数 strrstr函数实现
        【摘要】  1  memmove函数的实现 
#include <stdio.h>#include <string.h> void* my_memmove(void*dest, const void*src, size_t len)  {    char *pdest = (char *)dest;   const char* psrc = (char ...
    
    
    
    1 memmove函数的实现
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
     
      #include <string.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      void* my_memmove(void*dest, const void*src, size_t len) 
     
    
- 
    
     
    
    
     
      {   
     
    
- 
    
     
    
    
      char *pdest = (char *)dest;  
     
    
- 
    
     
    
    
      const char* psrc = (char *)src;  
     
    
- 
    
     
    
    
      if ((psrc < pdest) && (pdest < psrc + len))  
     
    
- 
    
     
    
    
     
       { 
     
    
- 
    
     
    
    
     
      		pdest = pdest + len - 1;
     
    
- 
    
     
    
    
     
      		psrc = psrc + len - 1;
     
    
- 
    
     
    
    
      while (len--)  
     
    
- 
    
     
    
    
     
       {
     
    
- 
    
     
    
    
     			printf("*pstr is %c and *pdest is %c\n", *psrc, *pdest);
     
    
- 
    
     
    
    
     
       *pdest-- = *psrc--;  
     
    
- 
    
     
    
    
     
       }  
     
    
- 
    
     
    
    
     
       }  
     
    
- 
    
     
    
    
      else  
     
    
- 
    
     
    
    
     
       {  
     
    
- 
    
     
    
    
      while (len--)  
     
    
- 
    
     
    
    
     
       {  
     
    
- 
    
     
    
    
     
       *pdest++ = *psrc++;  
     
    
- 
    
     
    
    
     
       }  
     
    
- 
    
     
    
    
     
       }  
     
    
- 
    
     
    
    
      return dest;  
     
    
- 
    
     
    
    
     
      }  
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     	char s1[10] = "chenyu";
     
    
- 
    
     
    
    
     	printf("dest is %s\n", s1);
     
    
- 
    
     
    
    
     	printf("src is %s\n", s1 - 3);
     
    
- 
    
     
    
    
     
      	memmove(s1, s1 - 3, 6);
     
    
- 
    
     
    
    
     	printf("s1 is %s\n", s1 + 3);
     
    
- 
    
     
    
    
     	char s2[10] = "chenyu";
     
    
- 
    
     
    
    
     
      	my_memmove(s2, s2 - 3, 6);
     
    
- 
    
     
    
    
     	printf("s2 is %s\n", s2 + 3
     
    
 文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/84556251
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)