56. (待更新)自实现库函数 mystrlen, mystrcpy, mystrcat, mystrcmp, mystrstr,mystrtok

1 int myStrlen(const char *src)
2 {
3     int len = 0;
4     while(*src++)
5     {
6         len++;
7     }
8     return len;
9 }
1 char* myStrcpy(char* dest,const char* src)
2 {
3     char *d = dest;
4     while(*dest++ == *src++);
5     return d;
6 }
1 char* myStrcat(char* dest,const char* src)
2 {
3     char *d = dest;
4     while(*dest) dest++;
5     while(*dest++ = *src++);
6     return d;
7 }
 1 int myStrcmp(const char* s1,const char* s2)
 2 {
 3 #if 0
 4     for(;(*s1&&*s2)&&(*s1++ == *s2++););
 5     return *s1-*s2;
 6 #endif
 7     
 8 #if 0
 9     for(;(*s1&&*s2)&&(*s1++ == *s2++););
10     return *s1-*s2;
11     
12 #endif
13     
14 #if 0
15     for(; *s1 && *s2 ;s1++,s2++)
16     {
17         if(*s1 != *s2)
18             break;
19     }
20     return *s1 - *s2;
21 #endif
22     
23 #if 0
24     for(;;str1++,str2++)
25     {
26         if(*str1 != *str2)
27             return *str1-*str2;
28         if(*str1 == 0)//两个字符串同时到结尾
29             return 0;
30     }
31 #endif
32 }
 1 char * myStrstr(char *str, char *subStr)//调用库函数实现
 2 {
 3     if(*subStr == '')
 4         return str;
 5     while(str = strchr(str,*subStr))
 6     {
 7         if(strncmp(str,subStr,strlen(subStr)) == 0)
 8               return str;
 9         str++;
10     }
11     return NULL;
12 }
13 
14 
15 char * myStrstr(char *str, char *subStr)//纯自实现
16 {
17     if(*subStr == '')//如果subStr是空串,直接返回str
18         return str;
19     while(*str)
20     {
21         int i = 0;
22         for(;*(str+i) == *(subStr+i);i++)
23         {
24             if(*(subStr+i+1) == '')
25                 return str;
26         }
27         str++;
28     }
29     return NULL;
30 }
原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9549337.html