From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- rushs/tinyprintf/my_strtok_r/my_strtok_r.c | 51 ++++++++++++++++++++++++++++++ rushs/tinyprintf/my_strtok_r/my_strtok_r.h | 6 ++++ 2 files changed, 57 insertions(+) create mode 100644 rushs/tinyprintf/my_strtok_r/my_strtok_r.c create mode 100644 rushs/tinyprintf/my_strtok_r/my_strtok_r.h (limited to 'rushs/tinyprintf/my_strtok_r') diff --git a/rushs/tinyprintf/my_strtok_r/my_strtok_r.c b/rushs/tinyprintf/my_strtok_r/my_strtok_r.c new file mode 100644 index 0000000..ec052b7 --- /dev/null +++ b/rushs/tinyprintf/my_strtok_r/my_strtok_r.c @@ -0,0 +1,51 @@ +#include "my_strtok_r.h" + +#include + +static int is_delim(char c, const char *delims) +{ + for (const char *d = delims; *d; d++) + { + if (*d == c) + return 1; + } + return 0; +} + +char *my_strtok_r(char *str, const char *delim, char **saveptr) +{ + if (str == NULL) + { + if (*saveptr == NULL) + { + return NULL; + } + str = *saveptr; + } + + size_t i = 0; + while (str[i] != '\0' && is_delim(str[i], delim)) + { + i++; + } + if (str[i] == '\0') + { + *saveptr = NULL; + return NULL; + } + + char *res = str + i; + + while (str[i] != '\0' && !is_delim(str[i], delim)) + { + i++; + } + if (str[i] == '\0') + { + *saveptr = NULL; + return res; + } + *saveptr = str + i + 1; + str[i] = '\0'; + return res; +} diff --git a/rushs/tinyprintf/my_strtok_r/my_strtok_r.h b/rushs/tinyprintf/my_strtok_r/my_strtok_r.h new file mode 100644 index 0000000..5603729 --- /dev/null +++ b/rushs/tinyprintf/my_strtok_r/my_strtok_r.h @@ -0,0 +1,6 @@ +#ifndef MY_STRTOK_R_H +#define MY_STRTOK_R_H + +char *my_strtok_r(char *str, const char *delim, char **saveptr); + +#endif /* ! MY_STRTOK_R_H */ -- cgit v1.2.3