diff --git a/cstdlib/string.c b/cstdlib/string.c index 7101922..2c15307 100644 --- a/cstdlib/string.c +++ b/cstdlib/string.c @@ -1,3 +1,39 @@ +char * +strchr(const char *s, int c){ + char *r; + + for(r = s; ; ++r){ + if(*r == c) + return r; + if(*r == '\0') + return NULL; + } +} + +char * +strrchr(const char *s, int c){ + char *r; + char *p; + + for(p = s, r = NULL; ; ++p){ + if(*p == c) + r = p; + if(*p == '\0') + break; + } + + return r; +} + +char * +strchrnul(const char *s, int c){ + char *r; + + for(r = s; ; ++r) + if(*r == c || r == '\0') + return r; +} + size_t strlen(const char *s){ size_t r; diff --git a/cstdlib/string.h b/cstdlib/string.h index 50353f6..fec5c2a 100644 --- a/cstdlib/string.h +++ b/cstdlib/string.h @@ -1,5 +1,8 @@ #ifndef _STRING_H # define _STRING_H -size_t strlen(const char *s); -size_t strnlen(const char *s, size_t maxlen); +char * strchr(const char *s, int c); +char * strrchr(const char *s, int c); +char *strchrnul(const char *s, int c); +size_t strlen(const char *s); +size_t strnlen(const char *s, size_t maxlen); #endif /* ifndef _STRING_H */