문자열 s1을 복사하고 복사한 문자열을 저장하는 저장공간을 할당 받은 뒤 복사한 문자열 포인터를 반환하는 함수
char *ft_strdup(const char *s1)
🔩 parameters
*s1 : 복사할 문자열
📬 return
char *형 반환
- malloc함수를 사용해 저장공간을 할당하고 s1을 복사 한 뒤 문자열 포인터를 반환
- 함수내에서 지역변수를 만들고 문자열을 복사해주면 함수가 끝났을때 스택영역에 있던 문자열을 저장한 저장공간이 사라져버림, 따라서 malloc함수를 사용하여 문자열을 복사할 저장공간을 새로 할당해줘야 함
- malloc의 할당실패시 NULL을 반환하므로 해당경우에 NULL을 리턴하여 함수를 끝내줌
#include "libft.h"
char *ft_strdup(const char *s1)
{
int len;
int i;
char *str;
i = 0;
len = ft_strlen(s1);
str = (char *)malloc(sizeof(char) * (len + 1));
if (str == 0)
return (0);
while (i < len)
{
str[i] = s1[i];
i++;
}
str[i] = '\0';
return (str);
}