101 lines
2.4 KiB
C
101 lines
2.4 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* ft_strjoin.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: tosuman </var/spool/mail/tosuman> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2023/03/30 20:50:21 by tosuman #+# #+# */
|
|
/* Updated: 2023/03/30 20:50:21 by tosuman ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
int ft_strlen(char *str)
|
|
{
|
|
int size;
|
|
|
|
size = 0;
|
|
while (*str++)
|
|
++size;
|
|
return (size);
|
|
}
|
|
|
|
char *ft_strcat(char *dest, char *src)
|
|
{
|
|
char *orig_s1;
|
|
|
|
orig_s1 = dest;
|
|
while (*dest)
|
|
++dest;
|
|
while (*src)
|
|
*dest++ = *src++;
|
|
*dest = 0;
|
|
return (orig_s1);
|
|
}
|
|
|
|
char *ft_strjoin(int size, char **strs, char *sep)
|
|
{
|
|
int total_len;
|
|
int sep_len;
|
|
int idx;
|
|
char *joined_str;
|
|
|
|
total_len = 0;
|
|
sep_len = ft_strlen(sep);
|
|
idx = -1;
|
|
while (++idx < size)
|
|
total_len += ft_strlen(strs[idx]) + sep_len;
|
|
total_len -= sep_len;
|
|
if (total_len < 1)
|
|
joined_str = malloc(sizeof(char) * 1);
|
|
else
|
|
joined_str = malloc(sizeof(char) * (total_len + 1));
|
|
idx = -1;
|
|
joined_str[0] = 0;
|
|
while (++idx < size)
|
|
{
|
|
ft_strcat(joined_str, strs[idx]);
|
|
if (idx < size - 1)
|
|
ft_strcat(joined_str, sep);
|
|
}
|
|
return (joined_str);
|
|
}
|
|
|
|
/* ////
|
|
#include <stdio.h>
|
|
|
|
int main(void)
|
|
{
|
|
char **strs;
|
|
char *sep;
|
|
int size;
|
|
char *result;
|
|
|
|
size = 5;
|
|
// sep = "<DELIM>";
|
|
sep = "";
|
|
strs = malloc(sizeof(char*) * size);
|
|
strs[0] = "First";
|
|
strs[1] = "Second";
|
|
strs[2] = "Third";
|
|
strs[3] = "Fourth";
|
|
strs[4] = "Fifth";
|
|
printf("strs size: '%d'\n", size);
|
|
printf("The delim: '%s'\n", sep);
|
|
printf("strs[0]: '%s'\n", strs[0]);
|
|
printf("strs[1]: '%s'\n", strs[1]);
|
|
printf("strs[2]: '%s'\n", strs[2]);
|
|
printf("strs[3]: '%s'\n", strs[3]);
|
|
printf("strs[4]: '%s'\n", strs[4]);
|
|
result = ft_strjoin(size, strs, sep);
|
|
printf("The concatenated string: '%s'\n", result);
|
|
printf("Length of that string: %d\n", ft_strlen(result));
|
|
free(result);
|
|
free(strs);
|
|
return (0);
|
|
}
|
|
*/ ////
|