From 87b515fa20c4a3750b15b642e2d082b6902a757f Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 20 Oct 2022 22:19:18 -0400 Subject: [PATCH] strchr(3), strchrnul(3), strrchr(3) --- cstdlib/string.c | 36 ++++++++++++++++++++++++++++++++++++ cstdlib/string.h | 7 +++++-- 2 files changed, 41 insertions(+), 2 deletions(-) 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 */