[42seoul] libft - 1

minskim2·2021년 9월 17일
0

42seoul

목록 보기
2/4
post-thumbnail

안녕하세요 민돌입니다.


그동안 미뤄뒀던 42서울 과제를 포스팅 할까해요.

42서울의 0서클 과제인 libft입니다. 모든 카뎃들이 제일 먼저 풀게되는 과제이죠. 이 과제는 기존에 라이브러리에 함수들을 재구현 하는 과제입니다.

이 과제를 제출한게 5월이니 벌써 4개월이 더 지났군요...ㄷㄷ 그 사이 과제가 좀 바꼈을지도 모르겠습니다.!

제가 작성한 코드 자체를 올리기보다 어떤 함수인지 코멘트를 다는 느낌으로 진행하겠습니다.


libft.a


1) ft_memset

void	*ft_memset(void *dest, int fillchar, size_t len)

dest의 주소에서 시작해서 len 바이트만큼 fillchar 값으로 채워주면 됩니다.
참고로 memset은 바이트 단위로 값을 초기화 해준다는것을 명심해야합니다.

무슨 말이냐면 dest가 int형같은 4바이트 크기의 자료형일경우, dest의 각 바이트 단위로 초기화 되기 때문에 의도한 값과 다를 수 있어서 주의해야 합니다.

return
dest 주소



2) ft_bzero

void	ft_bzero(void *dest, size_t n)

memset과 비슷한 함수 입니다. 이름만 봐도 알겠지만, dest의 주소부터 n 바이트만큼 0으로 채워줍니다.

return
dest 주소



3) ft_calloc

void	*ft_calloc(size_t n, size_t size)

malloc 함수처럼 heap으로부터 n * size 메모리를 할당한 후, 그 공간을 모두 0으로 초기화 합니다.

return
할당받은 메모리 주소



4) ft_memcpy

void	*ft_memcpy(void *dest, const void *src, size_t n)

src의 위치에서 n 바이트만큼 dest의 주소에 복사합니다.

return
dest 주소



5) ft_memccpy

void	*ft_memccpy(void *dest, const void *src, int c, size_t n)

src의 위치에서 n 바이트만큼 dest의 주소에 복사합니다. 하지만 src에서 문자 c를 만나면 c까지만 복사하고 중단합니다.

return
복사가 끝난 바로 다음주소. 복사가 끝났다면 NULL



6) ft_memmove

void	*ft_memmove(void *dest, const void *src, size_t n)

src의 위치에서 n 바이트만큼 값들을 dest의 위치로 옮깁니다. dest와 src의 위치가 겹쳐도 문제없이 실행됩니다.

ft_memcpy와의 차이점은 메모리가 겹쳐도 문제없이 복사한다.

return
dest 주소



7) ft_memchr

void	*ft_memchr(const void *dest, int value, size_t n)

dest의 위치에서 n 바이트만큼 value와 일치하는 값이 있는지 찾습니다.

return
value를 찾았다면 해당 주소를 반환합니다. 없다면 NULL 반환합니다.
(value와 일치하는 값이 여러개라면 처음 찾은 주소 반환)



8) ft_memcmp

int	ft_memcmp(const void *ptr1, const void *ptr2, size_t n)

ptr1와 ptr2의 위치에서 n 바이트만큼 값을 비교합니다.

return
ptr1와 ptr2가 같다면 0을 반환합니다. 만약 같지 않은 부분이 나오면 ptr1값 - ptr2값을 반환합니다.



9) ft_strlcpy

size_t	ft_strlcpy(char *dest, const char *src, size_t dstsize)

src위치부터 dstsize - 1만큼 dest위치에 복사합니다.
strncpy와 비슷하지만 dstsize - 1까지 복사를 진행하고 마지막에 NULL을 삽입합니다.

return
src의 길이를 반환합니다.



10) ft_strlen

size_t	ft_strlen(const char *str)

아주 익숙한 함수죠?
문자열 str의 길이를 구하는 함수입니다.

return
str의 길이를 반환합니다.



11) ft_strlcat

size_t	ft_strlcat(char *dest, const char *src, size_t size)

dest의 마지막 위치에 size - strlen(dest) - 1 만큼 src 값을 복사하고 맨끝에 NULL을 삽입합니다.

return
size가 dest의 크기보다 작다면 strlen(src) + size를 반환하고,
size가 dest의 크기보다 크다면 strlen(src) + strlen(dest)를 반환합니다.



12) ft_strchr

char	*ft_strchr(const char *str, int c)

문자열 str에서 첫번째로 나오는 문자 c(char로 변환)를 찾습니다. 인자로 받을 때는 int형이지만 함수 안에서 char로 처리됩니다. NULL문자도 찾는 문자로 받을 수 있습니다.

return
문자 c가 있다면 문자가 가장 먼저 나타나는 주소를 반환합니다. 없다면 NULL을 반환합니다.




libft에서 다루는 함수가 많기 때문에, 나머지 함수는 다음 포스트에서 다루겠습니다!

To be continued

profile
Boys, be ambitious!

0개의 댓글