diff --git a/C_07/c-07.tar b/C_07/c-07.tar index 2f61c77..8c78602 100644 Binary files a/C_07/c-07.tar and b/C_07/c-07.tar differ diff --git a/C_07/git/ex03/ft_strjoin.c b/C_07/git/ex03/ft_strjoin.c index adcc951..7efd106 100644 --- a/C_07/git/ex03/ft_strjoin.c +++ b/C_07/git/ex03/ft_strjoin.c @@ -6,7 +6,7 @@ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/19 11:25:51 by gbaconni #+# #+# */ -/* Updated: 2021/08/19 17:54:51 by gbaconni ### ########.fr */ +/* Updated: 2021/08/20 09:52:49 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,8 +19,40 @@ static int ft_strlen(char *str) int len; len = 0; - while (str[len++] != '\0') - continue ; + while (str[len] != '\0') + len++; + return (len); +} + +char *ft_strcat(char *dest, char *src) +{ + char *s1; + char *s2; + + s1 = dest; + s2 = src; + while (*s1 != '\0') + s1++; + while (*s2 != '\0') + *s1++ = *s2++; + *s1 = '\0'; + return (dest); +} + +int ft_strslen(int size, char **strs, char *sep) +{ + int len; + int i; + + len = 1; + i = 0; + while (i < size) + { + len += ft_strlen(strs[i]); + if (i < size - 1) + len += ft_strlen(sep); + i++; + } return (len); } @@ -30,20 +62,18 @@ char *ft_strjoin(int size, char **strs, char *sep) int len; int i; - len = 0; - len = strlen(sep); - printf("strlen %d", len); - len = 0; - len = ft_strlen(sep); - printf("ft_strlen %d", len); - len = 0; + if (strs == NULL) + return (NULL); + len = ft_strslen(size, strs, sep); + str = (char *) malloc(len * sizeof(char)); i = 0; while (i < size) { - len += ft_strlen(strs[i]) - 1; - len += ft_strlen(sep) - 1; + ft_strcat(str, strs[i]); + if (i < size - 1) + ft_strcat(str, sep); + i++; } - printf("len=%d\n", len); - str = (char *) malloc(len * sizeof(char)); + strs[i] = "\0"; return (str); } diff --git a/C_07/git/ex03/main.c b/C_07/git/ex03/main.c index ebe984d..dd29822 100644 --- a/C_07/git/ex03/main.c +++ b/C_07/git/ex03/main.c @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2021/08/19 11:11:01 by gbaconni #+# #+# */ -/* Updated: 2021/08/19 18:28:17 by gbaconni ### ########.fr */ +/* Created: 2021/08/20 09:34:53 by gbaconni #+# #+# */ +/* Updated: 2021/08/20 09:36:09 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,16 +25,18 @@ int main(void) char *result; sep = ""; - strs = malloc(3 * sizeof(strs)); + strs = malloc(3 * sizeof(*strs)); + sep = (char *) malloc(32 * sizeof(char)); i = 0; while (i < 3) { - printf("Input String #%d: ", i + 1); - scanf("%s", strs++); + strs[i] = (char *) malloc(32 * sizeof(char)); + printf("Input String #%d [Max 31]: ", i + 1); + scanf("%s", strs[i++]); } printf("Input Separator: "); scanf("%s", sep); result = ft_strjoin(i, strs, sep); - printf("result=%s sep=%s (ft_strjoin)\nresult:\n", result, sep); + printf("size=%d sep=%s result=%s (ft_strjoin)\n", i, sep, result); return (0); }