strcat,strcmp,memcpy,strcpy等函数的实现

1 Strcat 函数原型如下
ExpandedBlockStart.gif View Code
 1  char   * strcat( char   * strDest,  const   char  strScr)  // 将源字符串加const,表明其为输入参数
 2  {
 3          char   *  address  =  strDest;  // 该语句若放在assert之后,编译出错
 4 
 5         assert((strDest  !=  NULL)  &&  (strScr  !=  NULL));  // 对源地址和目的地址加非0断言
 6 
 7          while ( * strDest)  // 是while(*strDest!=’\0’)的简化形式
 8         { 
 9             // 若使用while(*strDest++),则会出错,因为++是不受循环
10             strDest ++ // 约束的。所以要在循环体内++;因为要是*strDest最后指
11         }  // 向该字符串的结束标志’\0’。
12          while ( * strDest ++   =   * strScr ++ // 是while((*strDest++ = *strScr++)!=’\0’)的简化形式
13         {
14            NULL;  // 该循环条件内可以用++,
15         }  // 此处可以加语句*strDest=’\0’;
16         return  address;  // 为了实现链式操作,将目的地址返回
17 
18  }
2Strcpy函数原型如下:

 

ExpandedBlockStart.gif View Code
 1  char   * strcpy( char   * strDest,  const   char   * strScr)
 2  {
 3          char   * address = strDest;
 4         assert((strDest  !=  NULL)  &&  (strScr  !=  NULL));
 5          while ( * strScr)  // 是while(*strScr != ’\0’)的简化形式;
 6 
 7         {
 8                 * strDest ++   =   * strScr ++ ;
 9         }
10          * strDest  =   ' \0 ' // 当strScr字符串长度小于原strDest字符串长度
11 
12          return  address;  // 时,如果没有改语句,就会出错了。
13 
14  }

3.Strcmp函数原型如下:

ExpandedBlockStart.gif View Code
 1  int  strcmp ( const   char   * str1, const   char   * str2)
 2 
 3          int  len  =   0 ;
 4         assert((str1  !=   ' \0 ' &&  (str2  !=   ' \0 ' ));
 5          while ( * str1  &&   * str2  &&  ( * str1  ==   * str2))
 6         {
 7                str1 ++ ;
 8                str2 ++ ;
 9         }
10          return   * str1 -* str2;
11  }

4 strlen函数原型如下:

ExpandedBlockStart.gif View Code
 1  int  strlen( const   char   * str)
 2  {
 3       int  len  =   0 ;
 4         assert(str  !=  NULL);
 5          while ( * str ++ )
 6         {
 7                len ++ ;
 8         }
 9          return  len;
10  }

5.memcpy函数原型如下

 

ExpandedBlockStart.gif View Code
1  void   * memcpy( void   * dest,  const   void   * src, size_t count)
2  {
3    char   * tmp  =  dest;
4    const   char   * =  src;
5    while  (count -- )
6     * tmp ++   =   * s ++ ;
7    return  dest;
8  }

 

 

转载于:https://www.cnblogs.com/winnxm/archive/2011/05/17/2049266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值