/* ** create a copy of a portion of s, begining at start and of length len */ /* ** #include ** ** char *ft_substr(char const *s, unsigned int start, size_t len); ** ** char *ft_strdup(const char *src) ** { ** int i; ** char *str; ** ** i = 0; ** while (src[i] != '\0') ** i++; ** if (!(str = (char*)malloc(sizeof(*str) * (i + 1)))) ** return (NULL); ** while (i-- >= 0) ** str[i + 1] = src[i + 1]; ** return (str); ** } ** ** int ft_strncmp(const char *s1, const char *s2, size_t n) ** { ** size_t i; ** int res; ** ** i = 0; ** res = 0; ** while (s1[i] && s1[i] == s2[i] && i < n - 1) ** i++; ** if (n != 0) ** res = (unsigned char)s1[i] - (unsigned char)s2[i]; ** return (res); ** } ** ** size_t ft_strlen(const char *str) ** { ** size_t i; ** ** i = 0; ** while (str[i]) ** i++; ** return (i); ** } ** ** int main(int ac, char **av) ** { ** char *str; ** ** str = ""; ** size_t size = 0; ** char *ret = ft_substr(str, 5, size); ** if (!ft_strncmp(ret, str + 5, size)) ** printf("gloups\n"); ** free(ret); ** return (0); ** } */ #include "libft.h" char *ft_substr(char const *s, unsigned int start, size_t len) { char *str; size_t i; if (!s) return (NULL); if (ft_strlen(s) < start) return (ft_strdup("")); if (!(str = (char *)malloc(sizeof(char) * (len + 1)))) return (NULL); i = 0; while (i < len && s[start]) str[i++] = s[start++]; str[i] = '\0'; return (str); }