常用的c标准库实现

原文链接:http://blog.sina.com.cn/s/blog_67b077fe01018w36.html

1)字符串拷贝
  1. char strcpy( char *strDest, const char *strSrc      
  2.     
  3.     if(strDest == strSrc) return strDest;  
  4.     assert( (strDest != NULL) && (strSrc != NULL) );     
  5.     char *address strDest;      
  6.     while(*strDest++ strSrc++) != '/0' );      
  7.     return address;     
  8. }
  1. //字串末尾要加结束符'/0',不然输出错位结果  
  2. char *strncpy(char *strDes, const char *strSrc, unsigned int count)      
  3.      
  4.     assert(strDes != NULL && strSrc != NULL);      
  5.     char *address strDes;      
  6.     while (count-- && *strSrc != '/0'     
  7.         *strDes++ *strSrc++;   
  8.     *strDes '/0' 
  9.     return address;      
  10. }
2)字符串比较
  1. int strcmp(const char *s, const char *t)   
  2.   
  3.     assert(s != NULL && != NULL);   
  4.     while (*s && *t && *s == *t)   
  5.       
  6.         ++ s;   
  7.         ++ t;   
  8.       
  9.     return (*s *t);   
  10. }

  11. int strncmp(const char *s, const char *t, unsigned int count)   
  12.       assert((s != NULL) && (t != NULL));   
  13.     while (*s && *t && *s == *t && count --)   
  14.               ++ s;           ++ t;         
  15.     return (*s *t);   
  16.   
3)字符串连接
  1. char *strcat(char *strDes, const char *strSrc)   
  2.   
  3.     assert((strDes != NULL) && (strSrc != NULL));   
  4.     char *address strDes;   
  5.     while (*strDes != '/0'  
  6.         ++ strDes;   
  7.     while ((*strDes ++ *strSrc ++) != '/0'  
  8.         NULL;   
  9.     return address;   
  10. }
  1. char *strncat(char *strDes, const char *strSrc, unsigned int count)   
  2.   
  3.     assert((strDes != NULL) && (strSrc != NULL));   
  4.     char *address strDes;   
  5.     while (*strDes != '/0'  
  6.         ++ strDes;   
  7.     while (count -- && *strSrc != '/0'   
  8.         *strDes ++ *strSrc ++;   
  9.     *strDes '/0'  
  10.     return address;   
  11. }   
4)字符串长度
  1. int strlen(const char *str)   
  2.   
  3.     assert(str != NULL);   
  4.     int len 0;   
  5.     while (*str ++ != '/0'  
  6.         ++ len;   
  7.     return len;   
  8. }
5)字符串匹配
  1. char *strstr(const char *strSrc, const char *str)   
  2.   
  3.     assert(strSrc != NULL && str != NULL);   
  4.     const char *s strSrc;   
  5.     const char *t str;   
  6.     for (; *strSrc != '/0'++ strSrc)   
  7.       
  8.         for (s strSrc, str; *t != '/0' && *s == *t; ++s, ++t)   
  9.             NULL;   
  10.         if (*t == '/0'  
  11.             return (char *) strSrc;   
  12.       
  13.     return NULL;   
  14. }
6)内存块复制
  1. void *memcpy(void *dest, const void *src, unsigned int count)   
  2.   
  3.     assert((dest != NULL) && (src != NULL));   
  4.     void *address dest;   
  5.     while (count --)   
  6.       
  7.         *(char *) dest *(char *) src;   
  8.         dest (char *) dest 1;   
  9.         src (char *) src 1;   
  10.       
  11.     return address;   
  12. }
7)内存块赋值初始化
  1. void *memset(void *str, int c, unsigned int count)   
  2.   
  3.     assert(str != NULL);   
  4.     void *s str;   
  5.     while (count --)   
  6.       
  7.         *(char *) (charc;   
  8.         (char *) 1;   
  9.       
  10.     return str;   
  11. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值