ft_strlcat.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* ft_strlcat.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: ll-hotel <ll-hotel@student.42lyon.fr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/11/07 13:33:54 by ll-hotel #+# #+# */ 9 /* Updated: 2024/02/23 03:43:31 by ll-hotel ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 static unsigned long long _strlen(const char *s) 14 { 15 unsigned long long l; 16 17 l = 0; 18 while (s[l]) 19 l++; 20 return (l); 21 } 22 23 unsigned long long ft_strlcat(char *dst, const char *src, \ 24 unsigned long long size) 25 { 26 const unsigned long long len_dst = _strlen(dst); 27 const unsigned long long len_src = _strlen(src); 28 unsigned long long l; 29 unsigned long long i; 30 31 l = 0; 32 if (!size) 33 return (len_src); 34 while (l < size && dst[l]) 35 l++; 36 i = 0; 37 while (l < size - 1 && src[i]) 38 dst[l++] = src[i++]; 39 if (len_dst <= size) 40 dst[l] = 0; 41 if (size < len_dst) 42 return (size + len_src); 43 return (len_dst + len_src); 44 }