/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_strlcat.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: whaffman +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/09 14:28:08 by whaffman #+# #+# */ /* Updated: 2024/06/12 16:17:01 by whaffman ### ########.fr */ /* */ /* ************************************************************************** */ #include #include unsigned int ft_strlen(char *str) { int i; i = 0; while (str[i]) i++; return (i); } unsigned int ft_strlcat(char *dest, char *src, unsigned int size) { unsigned int src_len; unsigned int dest_len; unsigned int i; src_len = ft_strlen(src); dest_len = ft_strlen(dest); if (dest_len >= (long int) size) return (size + src_len); i = 0; while (src[i] && i < size - dest_len - 1) { dest[dest_len + i] = src[i]; i++; } dest[dest_len + i] = '\0'; return (src_len + dest_len); } #ifdef DEBUG void test(char *dest1, char *dest2, char *src, int size) { int result_ft; int result_bsd; printf("=====================================\n"); printf("dest1(len = %d): \"%s\"\n", ft_strlen(dest1), dest1); printf("dest2(len = %d): \"%s\"\n", ft_strlen(dest2), dest2); printf("src(len = %d): \"%s\"\n", ft_strlen(src), src); result_ft = ft_strlcat(dest1, src, size); result_bsd = strlcat(dest2, src, size); printf("ft: %d\n", result_ft); printf("bsd: %d\n", result_bsd); printf("dest1(ft) : \"%s\"\n", dest1); printf("dest2(bsd): \"%s\"\n", dest2); } int main(void) { char dest1[5]; char dest2[5]; strcpy(dest1, "Ha"); strcpy(dest2, "Ha"); test(dest1, dest2, "ai", 4); } #endif