summaryrefslogtreecommitdiff
path: root/ft_strrchr.c
diff options
context:
space:
mode:
Diffstat (limited to 'ft_strrchr.c')
-rw-r--r--ft_strrchr.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/ft_strrchr.c b/ft_strrchr.c
new file mode 100644
index 0000000..17dfcb5
--- /dev/null
+++ b/ft_strrchr.c
@@ -0,0 +1,86 @@
+/*
+Libft Copyright (C) 2026 yctct
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include "libft.h"
+
+char *ft_strrchr(const char *s, int c)
+{
+ int slen;
+
+ slen = ft_strlen(s);
+ while (slen >= 0)
+ {
+ if (s[slen] == (char)c)
+ return ((char *)&s[slen]);
+ slen--;
+ }
+ return (0);
+}
+
+/*
+char *ft_strrchr(const char *p, int ch)
+{
+ int i;
+
+ i = 0;
+ while (s[i])
+ i++;
+ while (s[i] != (char)c)
+ if (i-- == 0)
+ return (NULL);
+ return ((char *)&s[i]);
+}
+
+char *ft_strrchr(const char *p, int ch)
+{
+ char *save;
+
+ save = NULL;
+ while (1)
+ {
+ if (*p == (char)ch)
+ save = (char *)p;
+ if (!*p++)
+ return (save);
+ }
+}
+
+#include <string.h>
+
+int main(void)
+{
+ const char s[] = "Helleo";
+ int i;
+ int j;
+ int k;
+
+ i = (int) 'i';
+ j = (int) 'e';
+ k = '\0';
+ printf("Expected return: NULL\n");
+ printf("ft_strrchr: %s\n", ft_strrchr(s, i));
+ printf(" strrchr: %s\n", strrchr(s, i));
+ printf("------------------------\n");
+ printf("Expected return: 'eo'\n");
+ printf("ft_strrchr: %s\n", ft_strrchr(s, j));
+ printf(" strrchr: %s\n", strrchr(s, j));
+ printf("------------------------\n");
+ printf("Expected return: 'null byte'\n");
+ printf("ft_strrchr: %s\n", ft_strrchr(s, k));
+ printf(" strrchr: %s\n", strrchr(s, k));
+}
+*/