ft_strjoin - chanhl22/libft GitHub Wiki

  1 /* ************************************************************************** */
  2 /*                                                                            */
  3 /*                                                        :::      ::::::::   */
  4 /*   ft_strjoin.c                                       :+:      :+:    :+:   */
  5 /*                                                    +:+ +:+         +:+     */
  6 /*   By: chanhlee <[email protected].>       +#+  +:+       +#+        */
  7 /*                                                +#+#+#+#+#+   +#+           */
  8 /*   Created: 2021/01/23 19:16:51 by chanhlee          #+#    #+#             */
  9 /*   Updated: 2021/02/02 12:49:34 by chanhlee         ###   ########.fr       */
 10 /*                                                                            */
 11 /* ************************************************************************** */
 12 
 13 #include "libft.h"
 14 
 15 char    *ft_strjoin(char const *s1, char const *s2)
 16 {
 17     char    *str;                                                                         
 18     int     s1_len;
 19     int     s2_len;
 20     
 21     if (!s1 || !s2)            // NULL 체크
 22     return (NULL);
 23     s1_len = ft_strlen(s1);      // 길이 담아줌
 24     s2_len = ft_strlen(s2);
 25     if (!(str = (char*)malloc(sizeof(char) * (s1_len + s2_len + 1)))) // 할당, 실패하면 NULL
 26         return (NULL);
 27     ft_memcpy(str, s1, s1_len);        // str로 메모리 복사
 28     ft_memcpy(str + s1_len, s2, s2_len); 
 29     str[s1_len + s2_len] = '\0';    //마지막에  널값 넣어줌
 30     return (str);
 31 } 

원래 while로 풀었으나 예외처리의 실수로 메모리 복사함수로 처리