Author: bakari Date: 2012/8/9
继上篇。。。。。
下面是我写的代码与源码作的一些比较,均已严格测试通过,分别以“string 之”系列述之。
下面包括strcmp , stricmp , strncmp函数
代码语言:javascript复制1 //strcmp
2 int Mystrcmp(const char *str1, const char *str2);
3 int Mystricmp(const char *str1, const char *str2);
4 int Mystrncmp(const char *str1, const char *str2, size_t nCount);
代码语言:javascript复制 1 /*******************************************************
2 * strcmp , stricmp and strncmp
3 * stricmp and strncmp need to improve!
4 * stricmp ignore case , but strcmp not!
5 *******************************************************/
6 int Mystrcmp(const char *str1, const char *str2){
7 assert(NULL != str1 && NULL != str2);
8 while(*str1 && *str2 && (*str1 == *str2)){
9 str1 ;
10 str2 ;
11 }
12
13 /* This is source code,Great ! */
14 /* int ret;
15 while(1){
16 if((ret = (*str1 - *str2)) != 0 || !*str2 )
17 break;
18 }
19 return ret;
20 */
21 return (*str1 - *str2);
22 }
23 int Mystricmp(const char *str1, const char *str2){
24 assert(NULL != str1 && NULL != str2);
25 while(*str1 && *str2){
26 if((*str1 == *str2) || (*str1 32 == *str2) || (*str1 - 32 == *str2)){
27 str1 ;
28 str2 ;
29 continue;
30 }
31 }
32 return *str1 - *str2;
33 }
34 int Mystrncmp(const char *str1, const char *str2, size_t nCount){
35 assert(NULL != str1 && NULL != str2 && nCount <=
36 ((strlen(str1) < strlen(str2))? strlen(str1): strlen(str2)));
37 while((--nCount) && (*str1 == *str2) ){
38 str1 ;
39 str2 ;
40 }
41 return *str1 - *str2;
42 }
有不同解法的欢迎交流!