From 8aa76b5b7f2d283295b9e5c6acfa1dd424ed5b14 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 19 Jul 2026 13:29:14 +0100 Subject: [PATCH] libc: core: implement strrchr --- lib/libc/core/string/strrchr.c | 14 ++++++++++++++ lib/libc/include/string.h | 1 + 2 files changed, 15 insertions(+) create mode 100644 lib/libc/core/string/strrchr.c 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);