piscine/c03/ex05/ft_strlcat.c
Willem Haffmans 607ce08c18 all
2024-09-10 00:18:01 +02:00

75 lines
2.1 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strlcat.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/09 14:28:08 by whaffman #+# #+# */
/* Updated: 2024/06/12 16:17:01 by whaffman ### ########.fr */
/* */
/* ************************************************************************** */
#include <stdio.h>
#include <bsd/string.h>
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