#include #include char* strtok_r(char *s, const char *delim, char **saveptr) { char *token; if (!saveptr) { return NULL; } if (!s) { s = *saveptr; } if (!s || *s == '\0') { *saveptr = s; return NULL; } while (*s != '\0') { const char *d = delim; int is_delim = 0; while (*d != '\0') { if (*s == *d) { is_delim = 1; break; } d++; } if (!is_delim) { break; } s++; } if (*s == '\0') { *saveptr = s; return NULL; } token = s; while (*s != '\0') { const char *d = delim; int is_delim = 0; while (*d != '\0') { if (*s == *d) { is_delim = 1; break; } d++; } if (is_delim) { *s = '\0'; *saveptr = s + 1; return token; } s++; } *saveptr = s; return token; }