/ libft / src / ft_basics / ft_strjoin.c
ft_strjoin.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   ft_strjoin.c                                       :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: ll-hotel <ll-hotel@student.42lyon.fr>      +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2023/11/07 20:08:01 by ll-hotel          #+#    #+#             */
 9  /*   Updated: 2024/04/19 16:15:51 by ll-hotel         ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include "ft_basics.h"
14  #include <stdlib.h>
15  
16  static size_t	_strlen(const char *s)
17  {
18  	size_t	l;
19  
20  	l = 0;
21  	if (s)
22  		while (s[l])
23  			l++;
24  	return (l);
25  }
26  
27  char	*ft_strjoin(const char *s1, const char *s2)
28  {
29  	char	*str;
30  	size_t	s1_len;
31  	size_t	s2_len;
32  
33  	if (!s1 && !s2)
34  		return (NULL);
35  	s1_len = _strlen(s1);
36  	s2_len = _strlen(s2);
37  	str = malloc(sizeof(char) * (s1_len + s2_len + 1));
38  	if (!str)
39  		return (NULL);
40  	if (s1)
41  		ft_memmove(str, s1, s1_len);
42  	if (s2)
43  		ft_memmove(str + s1_len, s2, s2_len);
44  	str[s1_len + s2_len] = 0;
45  	return (str);
46  }