ft_strjoin 구현

yeonjkim·2021년 5월 24일
0

42seoul-libft

목록 보기
26/43

1. ft_strjoin 용도

* 인자로 받은 두 개의 문자열을 합쳐 반환하는 함수

* 합친 문자열의 앞부분에는 s1이, 뒷부분에는 s2가 온다

2. ft_strjoin 프로토타입

char	*ft_strjoin(char consst *s1, char const *s2)
char const *s1 : 합칠 문자열 중 앞부분에 올 문자열
char const *S2 : 합칠 문자열 중 뒷부분에 올 문자열

3. 구현 시 유의사항

  • 메모리 할당에 실패했을 때 NULL을 반환한다.

  • 합친 문자열의 맨 뒤에는 '\0'이 존재해야 함.

4. 코드 구현

#include "libft.h"

char    *ft_strjoin(char const *s1, char const *s2)
{
        size_t  sindex1;
        size_t  sindex2;
        size_t  index;
        size_t  strindex;
        char    *str;

        sindex1 = ft_strlen(s1);
        sindex2 = ft_strlen(s2);
        index = 0;
        strindex = 0;
        if (!(str = (char*)malloc(sizeof(char) * (sindex1 + sindex2 + 1))))
                return (NULL);
        while (index < sindex1)
                str[strindex++] = s1[index++];
        index = 0;
        while (index < sindex2)
                str[strindex++] = s2[index++];
        str[strindex] = '\0';
        return (str);
}

5. 코드 구현 방법

(1) s1의 length를 저장하는 sindex1, s2의 length를 저장하는 sindex2, 새로 만든 문자열의 index를 가리키는 strindex, s1과 s2의 index를 담당하는 index변수를 선언한다.
(2) 새로 만드는 문자열 str의 맨 끝에는 '\0'도 있어야 하므로 sindex1 + sindex2 + 1만큼 할당한다.
(3) 할당 실패 시 NULL을 반환한다.
(4) index가 sindex1(s1길이)보다 작을때까지 str에 s1옮기기.
(5) index를 0으로 초기화하고 index가 sindex2(s2길이)보다 작을 때까지 str에 s2옮기기.
(6) 마지막에 '\0'넣고 리턴.

0개의 댓글