diff --git a/lib/libc/core/string/strrchr.c b/lib/libc/core/string/strrchr.c new file mode 100644 index 0000000..192de54 --- /dev/null +++ b/lib/libc/core/string/strrchr.c @@ -0,0 +1,14 @@ +#include + +char *strrchr(const char *str, int c) +{ + size_t len = strlen(str); + + for (int i = len - 1; i > 0; i--) { + if (str[i] == c) { + return (char *)&str[i]; + } + } + + return NULL; +} diff --git a/lib/libc/include/string.h b/lib/libc/include/string.h index 22ae8ce..4951bc2 100644 --- a/lib/libc/include/string.h +++ b/lib/libc/include/string.h @@ -11,6 +11,7 @@ extern size_t strlen(const char *s); extern size_t strcspn(const char *dest, const char *src); extern char *strchr(const char *str, int c); +extern char *strrchr(const char *str, int ch); extern int strcmp(const char *s1, const char *s2); extern int strncmp(const char *s1, const char *s2, unsigned long n);