常考题目:字符串处理函数

(1)strcpy()函数的实现
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. char* mystrcpy(char* dest, const char* source)     //const的用法  
  2. {  
  3.     assert((dest != NULL) && (source != NULL)); //要包含头文件<assert.h>;若条件表达式为假,则终止程序。  
  4.     char* temp = dest;  
  5.     while((*dest++ = *source++) != '\0'); //不要丢掉了冒号  
  6.     return temp;  
  7. }  


(2)strncpy()函数的实现
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. char *strncpy(char* strDes, const char *strSrc, int count)  
  2. {  
  3.     assert(strDes != NULL &&strSrc != NULL);  
  4.     char *address = strDes;  
  5.     while (count -- && *strSrc !='\0')  
  6.         *strDes ++ = *strSrc ++;  
  7.     return address;  
  8. }  


(3)strre()函数:实现字符串反转
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. char * srtrev(char * str)  
  2. {  
  3.     char *p1 = NULL, *p2 = NULL;  
  4.     if(!str)  
  5.         return str;  
  6.     for(p1 = str, p2 = str+strlen(str)-1 ; p1 < p2 ; ++p1, --p2)  
  7.     {  
  8.          *p1 ^= *p2;  
  9.          *p1 ^= *p2;  
  10.          *p2 ^= *p1;  
  11.     }  
  12.     return str;  
  13. }  
http://blog.csdn.net/turingo/article/details/8124432
异或运算,常用于“交换两个数,而不借助于中间变量”。 



(4)memccpy():从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理,返回dest的值.
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. void *memmove(void *dest, const void *src, 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 = (const char *)src + 1;   
  10.     }   
  11.     return address;   
  12. }  




[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <p>  
  2. </p>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值