mystrlen, mystrcpy, mystrcat, mystrcmp, mystrchr, mystrstr 实现.

     面试过程中,经常碰到的一类基础编程题是关于C中string.h中若干常用函数的实现,下面做个简单整理:

1. 【mystrlen】 ----  求字串长度

 
 
size_t mystrlen ( const char * str ) {
assert ( str );
size_t length = 0 ;
while (( * str ++ ) != '\0' )
length ++ ;
return length ;
}


2. 【mystrcpy】 ----- 字符串拷贝

 
 
char * mystrcpy ( char * des , const char * src ) {
assert ( des && src );
char * ptr = des ;
while (( * des ++=* src ++ ) != '\0' )
;
return ptr ;
}


3. 【mystrcat】  ----  字符串连接

 
 
char * strcat ( char * str1 , const char * str2 ) {
assert ( str1 && str2 );
char * ptr = str1 ;
while ( * ptr != '\0' )
ptr ++ ;
while (( * ptr ++=* str2 ++ ) != '\0' )
;
return str1 ;
}


4. 【mystrcmp】----  字符串比较

 
 
int mystrcmp ( const char * s1 , const char * s2 ) {
assert ( s1 && s2 );
while ( * s1 &&* s2 && ( * s1 ==* s2 ))
s1 ++ , s2 ++ ;
return * s2 -* s1 ;
}


5. 【mystrchr】 -----  查找字符

 
 
char * mystrchr ( const char * str , char c ) {
assert ( str );
char * ptr = ( char * ) str ;
while ( * ptr != '\0' &&* ptr != c )
ptr ++ ;
return * ptr == c ? ptr : NULL ;
}


6. 【mystrstr】  ----   查找子串

 
 
char * mystrstr ( const char * str , const char * substr ) {
assert ( str && substr );
size_t len1 = 0 , len2 = 0 , pos = 0 ;
while ( * ( str + len1 ) != '\0' ) len1 ++ ;
while ( * ( substr + len2 ) != '\0' ) len2 ++ ;
if ( len2 > len1 ) return NULL ;
while ( pos ++< len1 - len2 ) {
int ipos = 0 ;
while (( ipos ++< len2 ) && ( * ( str + pos + ipos ) ==* ( substr + ipos )))
;
if ( ipos == len2 )
return ( char * )( str + pos );
}
return NULL ;
}





  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值