/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_strreplace.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: bchanot +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/19 23:19:39 by bchanot #+# #+# */ /* Updated: 2018/10/14 03:25:42 by bchanot ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" char *ft_stristr(const char *s1, const char *s2) { size_t i; size_t j; size_t size; i = 0; size = ft_strlen(s2); if (size == 0) return ((char *)s1); while (s1[i]) { if ((i && s1[i - 1] != '\\') || !i) { j = 0; while (s2[j] == s1[i + j]) { if (j == size - 1) return ((char *)&s1[i]); j++; } } i++; } return (NULL); } char *ft_strreplace(const char *src, const char *var, const char *val) { char *new; size_t i; size_t j; size_t k; if (!(new = ft_strnew(ft_strlen(src) - ft_strlen(var) + ft_strlen(val) + 1))) return (NULL); i = -1; while (ft_strcmp(&src[++i], ft_stristr(src, var))) new[i] = src[i]; j = -1; k = i; while (val[++j]) { new[k] = val[j]; k++; } i += ft_strlen(var); j = i; while (src[i]) new[k++] = src[i++]; return (new); }