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)//两个字符串同时到结尾\0 29 return 0; 30 } 31 #endif 32 }
1 char * myStrstr(char *str, char *subStr)//调用库函数实现 2 { 3 if(*subStr == '\0') 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 == '\0')//如果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) == '\0') 25 return str; 26 } 27 str++; 28 } 29 return NULL; 30 }