aboutsummaryrefslogtreecommitdiff
path: root/c07/ex03
diff options
context:
space:
mode:
Diffstat (limited to 'c07/ex03')
-rw-r--r--c07/ex03/ft_strjoin.c37
1 files changed, 15 insertions, 22 deletions
diff --git a/c07/ex03/ft_strjoin.c b/c07/ex03/ft_strjoin.c
index ea97bb6..7801820 100644
--- a/c07/ex03/ft_strjoin.c
+++ b/c07/ex03/ft_strjoin.c
@@ -6,7 +6,7 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/07 16:14:25 by cacharle #+# #+# */
-/* Updated: 2019/07/09 09:08:52 by cacharle ### ########.fr */
+/* Updated: 2019/07/12 14:41:33 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -24,16 +24,11 @@ int my_strlen(char *str)
int cummulative_strlen(int size, char **strs)
{
- int i;
int len;
len = 0;
- i = 0;
- while (size > 0)
- {
- len += my_strlen(strs[size - 1]);
- size--;
- }
+ while (size-- > 0)
+ len += my_strlen(strs[size]);
return (len);
}
@@ -42,26 +37,24 @@ char *ft_strjoin(int size, char **strs, char *sep)
int i;
int j;
int k;
- int l;
char *join;
join = (char*)malloc(sizeof(char) * (cummulative_strlen(size, strs)
- + my_strlen(sep) * (size - 1) + 1));
+ + my_strlen(sep) * (size - (size == 0 ? 0 : 1) + 1)));
+ if (join == NULL)
+ return (NULL);
j = 0;
- l = 0;
- while (l < size)
+ k = 0;
+ while (k < size)
{
i = 0;
- while (strs[l][i])
- {
- join[j] = strs[l][i];
- i++;
- j++;
- }
- k = 0;
- while (l != size - 1 && sep[k])
- join[j++] = sep[k++];
- l++;
+ while (strs[k][i])
+ join[j++] = strs[k][i++];
+ i = 0;
+ while (k != size - 1 && sep[i])
+ join[j++] = sep[i++];
+ k++;
}
+ join[j] = '\0';
return (join);
}