ft_strdup

jen133·2022년 1월 15일
0

libft

목록 보기
23/44

💻 ft_strdup

문자열 s1을 복사하고 복사한 문자열을 저장하는 저장공간을 할당 받은 뒤 복사한 문자열 포인터를 반환하는 함수

📃 ft_strdup 원형

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);
}

profile
늅늅

0개의 댓글