[getnextline](2)Util함수 구현


이번 포스트는 get_next_line프로그램에 필요한 함수들에 대한 내용입니다.


1️⃣ 유틸함수

  • get_next_line함수는 기본적으로 <unistd.h>헤더파일에 선언된 저수준입출력함수를 이용하여 구현할 예정입니다.
    저수준입출력함수에 관한 내용은 (1) open,close함수, (2) read,write,lseek함수을 참고하시면 됩니다.
  • 그외에 필요한 함수들은 따로 get_next_line_utils.c파일에 구현하여 사용할 예정입니다.

< 추가적으로 필요한 함수 >

  1. 문자열의 길이를 새어주는 함수(strlen)
  2. 메모리를 복사해주는 함수(memcpy)
  3. 기존문자열에 새로운문자열을 붙여 새로 할당한 메모리에 복사하는 함수(strjoin)
  4. 문자열을 원하는 길이만큼 새로 할당한 메모리에 복사하는 함수(strndup)

2️⃣ 함수 구현

1. < ft_strlen >

strlen함수포스트를 참고하시면 됩니다.

size_t ft_strlen(const char *str)
{
	size_t	len;

	len = 0;
	while (*str != '\0')
	{
		str++;
		len++;
	}
	return (len);
}

2. < ft_memcpy >

memcpy함수포스트를 참고하시면 됩니다.

void *ft_memcpy(void *dst, const void *src, size_t size)
{
	unsigned char       *dp;
	const unsigned char *sp;

	dp = dst;
	sp = src;
	if (dp == NULL && sp == NULL)
		return (0);
	while (size-- > 0)
		*dp++ = *sp++;
	return (dst);
}

3. < ft_strjoin >

char *ft_strjoin(char const *s1, char const *s2)
{
	size_t	len1;
	size_t	len2;
	char	*result;

	len1 = ft_strlen(s1);
	len2 = ft_strlen(s2);
	if (!(result = (char *)malloc(sizeof(char) * (len1 + len2 + 1))))
		return (0);
	ft_memcpy(result, s1, len1);
	ft_memcpy(result + len1, s2, len2);
	result[len1 + len2] = '\0';
	return (result);
}

4. < ft_strndup >

char *ft_strndup(const char *str, ssize_t offst)
{
	char	*result;
	ssize_t	cnt;

	cnt = 0;
	if (!(result = (char *)malloc(sizeof(char) * (offst + 1))))
		return (0);
	while (*str != '\0' && cnt < offst)
	{
		*result++ = *str++;
		cnt++;
	}
	*result = '\0';
	return (result - cnt);
}



이전포스트 > [getnextline](1)헤더파일 만들기

다음포스트 > [getnextline](3)본함수 구현





© 2021.02. by kirim

Powered by kkrim