/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_strlcat.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tosuman +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/05/11 16:55:00 by tosuman #+# #+# */ /* Updated: 2023/05/11 16:55:01 by tosuman ### ########.fr */ /* */ /* ************************************************************************** */ #include size_t ft_strlcat(char *dst, const char *src, size_t size) { size_t idx; size_t slen; size_t dlen; idx = 0; while (dst[idx]) ++idx; dlen = idx; if (dlen > size) return (size); slen = 0; while (src[slen]) dst[idx++] = src[slen++]; return (dlen + slen); } // #include // #include // int main() // { // printf("%d", ft_strlcat()); // printf("%d", ft_strlcat()); // return (0); // } /* Alternative implementation size_t ft_strlcat(char *dst, const char *src, size_t size) { size_t dst_len; size_t src_len; if ((!dst || !src) && size == 0) return (0); dst_len = 0; src_len = -1; while (*dst++) ++dst_len; while (src[++src_len]) ; if (size <= dst_len) return (size + src_len); if (--dst && dst_len > size) return (size + dst_len); while (src_len-- && ++dst_len < size) *dst++ = *src++; if (dst_len-- == size) --dst_len; *dst = 0; return (dst_len + src_len); } */