/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* get_next_line_utils_bonus.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/24 16:04:39 by dgaillet #+# #+# */ /* Updated: 2025/11/27 13:43:16 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include int index_of_nl(char *str, int limit) { int i; if (!str) return (-1); i = 0; while (i < limit && str[i]) { if (str[i] == '\n') return (i); i++; } return (-1); } size_t ft_strlen(const char *s) { size_t i; i = 0; while (s[i]) i++; return (i); } char *ft_strjoin_new(char const *s1, char const *s2, size_t limit) { char *str; size_t i; size_t j; str = malloc(sizeof(char) * (ft_strlen(s1) + ft_strlen(s2) + 1)); if (!str) return (NULL); i = 0; j = 0; while (s1[i]) { str[i] = s1[i]; i++; } while (j <= limit && s2[j]) { str[i + j] = s2[j]; j++; } str[i + j] = '\0'; free((void *) s1); return (str); } char *ft_substr(char const *s, unsigned int start, size_t len) { size_t i; char *sub_str; size_t s_len; if (!s) return (NULL); s_len = ft_strlen(s); if (start > s_len) len = 0; else if (s_len < (start + len)) len = s_len - start; sub_str = malloc(sizeof(char) * (len + 1)); if (!sub_str) return (NULL); i = 0; while (i < len) { sub_str[i] = s[start + i]; i++; } sub_str[i] = '\0'; return (sub_str); } void ft_bzero(void *s, size_t n) { while (n > 0) { *((unsigned char *) s) = '\0'; s++; n--; } }