From c63ee0defff25db4612e9114d847b5045948e366 Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Thu, 7 Mar 2024 16:51:56 +0100 Subject: Add stuff, fix stuff and whatever --- ft_strlcat.c | 56 ++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 16 deletions(-) (limited to 'ft_strlcat.c') diff --git a/ft_strlcat.c b/ft_strlcat.c index c16105a..0ce0e19 100644 --- a/ft_strlcat.c +++ b/ft_strlcat.c @@ -6,40 +6,64 @@ /* By: dkaiser -size_t ft_strlcat(char *restrict dst, const char *restrict src, size_t dstsize) +/* size_t ft_strlcat(char *dst, const char *src, size_t dstsize) */ +/* { */ +/* size_t len; */ +/* size_t i; */ + +/* if (dstsize == 0) */ +/* return (0); */ +/* len = 0; */ +/* while (len < dstsize - 1 && dst[len] != '\0') */ +/* { */ +/* len++; */ +/* } */ +/* i = 0; */ +/* while (len < dstsize - 1 && src[i] != '\0') */ +/* { */ +/* dst[len] = src[i]; */ +/* len++; */ +/* i++; */ +/* } */ +/* dst[len] = '\0'; */ +/* return (len); */ +/* } */ + +size_t ft_strlcat(char *dst, const char *src, size_t dstsize) { - size_t len; + size_t src_len; + size_t dst_len; size_t i; - if (dstsize == 0) - return (0); - len = 0; - while (len < dstsize - 1 && dst[len] != '\0') - { - len++; - } + src_len = 0; + while (src[src_len]) + src_len++; + dst_len = 0; + while (dst[dst_len]) + dst_len++; + if (dst_len >= dstsize) + return (dstsize + src_len); i = 0; - while (len < dstsize - 1 && src[i] != '\0') + while (i < src_len && dst_len + i < dstsize - 1) { - dst[len] = src[i]; - len++; + dst[dst_len + i] = src[i]; i++; } - dst[len] = '\0'; - return (len); + dst[dst_len + i] = '\0'; + return (dst_len + src_len); } /* #include */ /* int main () { */ /* char dst[12] = "Hello "; */ /* char dst2[12] = "Hello "; */ -/* char src[] = "World"; */ +/* char src[] = "World123"; */ /* size_t len = strlcat(dst, src, 12); */ /* size_t len2 = ft_strlcat(dst2, src, 12); */ -- cgit v1.2.3