* 인자로 받은 두 개의 문자열을 합쳐 반환하는 함수
* 합친 문자열의 앞부분에는 s1이, 뒷부분에는 s2가 온다
char *ft_strjoin(char consst *s1, char const *s2)
char const *s1 : 합칠 문자열 중 앞부분에 올 문자열
char const *S2 : 합칠 문자열 중 뒷부분에 올 문자열
메모리 할당에 실패했을 때 NULL을 반환한다.
합친 문자열의 맨 뒤에는 '\0'이 존재해야 함.
#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);
}
(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'넣고 리턴.