C语言库函数源代码
C语言库函数源代码 strstr ( )/* -- C语言库函数源代码 - */ /* 得到s1中第一次包含s2字符串的位置指针。 */ #include stdlib.h char * my_strstr(const char *s1,const char *s2) { if (*s1 == 0) { if (*s2) return (char *) NULL; return (char *) s1; } while (*s1) { size_t i; i = 0; while (1) { if (s2[i] == 0) { return (char *) s1; } if (s2[i] != s1[i]) { break; } i++; } s1++; } return (char *) NULL; } int main() { char *str1 = ammana_babi; char *str2 = babi; char *p; if( (p = my_strstr(str1,str2)) == NULL) printf(Cant find the string \%s\!\n,str2); else printf(Find the string \%s\!\n,p); str1 = abc; str2 = def; if( (p = my_strstr(str1,str2)) == NULL) printf(Cant find the string \%s\!\n,str2); else printf(Find the string \%s\!\n,p); system(pause); return 0; } strpbrk ( )/* -- C语言库函数源代码 - */ /* 得到s1中第一个且是s2中字符的位置指针。 */ #include stdlib.h char * my_strpbrk(const char *s1 ,const char *s2) { const char *c = s2; if (!*s1) return (char *) NULL; while (*s1) { for (c = s2; *c; c++) { if (*s1 == *c) break; } if (*c) break; s1++; } if (*c == \0) s1 = NULL; return (char *) s1; } int main() { char *str1 = ammana_babi; char *str2 = babi; char *p; if( (p = my_strpbrk(str1,str2)) == NULL) printf(No same character!\n); else printf(%c\n,*p); str1 = abc; str2 = def; if( (p = my_strpbrk(str1,str2)) == NULL) printf(No same character!\n); else printf(%c\n,*p); system(pause); return 0; } strcspn ( )/* -- C语言库函数源代码 - */ /* 得到s1中第一个且是s2中字符的字符位置。 */ int my_strcspn(const char *s1 ,const char *s2) { const char *s = s1; const char *p; while (*s1) { for (p = s2; *p; p++) { if (*s1 == *p) break; } if (*p) break; s1++; } return s1 - s; } int main() { char *str1 = ammana_babi; char *str2 = babi; int offset; if((offset = my_strcspn(str1,str2)) = strlen(str1)) printf(Cant find the same character!\n); else printf(%c\n,*(str1 + offset)); str1 = abc; str2 = def; if((offset = my_strcspn(str1,str2)) = strlen(str1)) printf(Cant find the same character!\n); else printf(%c\n,*(str1 + offset)); system(pause); return 0; } strspn ( )/* -- C语言库函数源代码 - */ /* 得到s1中第一 个且不是s2中任意字符的字符位置。 */ int my_strspn(const char *s1 ,const char *s2) { const char *s = s1; const char *p; while (*s1) { for (p = s2; *p; p++) { if (*s1 == *p) break; } if (*p == \0) break; s1++; } return s1 - s; } int main() { char *str1 = ammana_babi; char *str2 = &