piscine/c07/ex03/ft_strjoin.c
Willem Haffmans 607ce08c18 all
2024-09-10 00:18:01 +02:00

95 lines
2.1 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strjoin.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/17 10:17:32 by whaffman #+# #+# */
/* Updated: 2024/06/20 13:57:12 by whaffman ### ########.fr */
/* */
/* ************************************************************************** */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
char *ft_strcat(char *dest, char *src)
{
char *odest;
odest = dest;
while (*dest)
dest++;
while (*src)
*dest++ = *src++;
*dest = '\0';
return (odest);
}
int ft_strlen(char *str)
{
int i;
i = 0;
while (str[i])
i++;
return (i);
}
int ft_strjoin_len(int size, char **strs, char *sep)
{
int result;
int i;
i = 0;
result = 0;
if (size <= 0)
return (0);
while (i < size)
{
result += ft_strlen(strs[i]);
i++;
}
result += (size - 1) * ft_strlen(sep);
return (result);
}
char *ft_strjoin(int size, char **strs, char *sep)
{
char *result;
int length;
int i;
i = 0;
length = ft_strjoin_len(size, strs, sep) + 1;
result = (char *) malloc(length * sizeof(char));
if (!result)
return ((void *) 0);
*result = '\0';
while (i < size)
{
ft_strcat(result, strs[i]);
if (i != size - 1 && ft_strlen(sep) > 0)
ft_strcat(result, sep);
i++;
}
return (result);
}
/*
int main(void)
{
char *strs[3];
char str1[] = "HAllo";
char str2[] = "";
char str3[] = "mwaah";
char sep[] = ", ";
strs[0] = &str1[0];
strs[1] = &str2[0];
strs[2] = &str3[0];
printf("%s", ft_strjoin(0, strs, sep));
printf("DONE!");
}
*/