[42서울] Libft 함수 정리와 후기

2024. 3. 20. 21:22·대외활동/42서울
728x90
반응형

서론

42서울 본과정 첫 번째 과제인 Libft에 대해 정리해보려 한다.
 
Libft는 다양한 기본 함수들을 직접 구현하여 C 언어의 기초를 이해하기 위해 주어지는 과제이다. Libft에서는 문자열 처리, 메모리 할당 및 해체, 리스트 조작 등의 기본적인 작업을 다룬다. 예를 들어, strcpy, strlen, strdup과 같은 문자열 처리 함수들을 구현하고, malloc 및 free 함수를 사용하여 동적 메모리 할당과 해제를 다룬다. 또한 자료구조의 기본인 리스트를 조작하는 함수를 다룬다.
 

구현해야하는 함수 명세

함수 이름프로토타입반환 값 의미설명
ft_memsetvoid *ft_memset(void *s, int c, size_t n);메모리 주소 (s)주어진 메모리 영역을 지정한 값 (c)으로 설정한다.
ft_bzerovoid ft_bzero(void *s, size_t n);없음 (void)주어진 메모리 영역을 모두 0으로 설정한다.
ft_memcpyvoid *ft_memcpy(void *dest, const void *src, size_t n);목적지 메모리 주소 (dest)소스에서 목적지로 메모리 영역을 복사한다.
ft_memmovevoid *ft_memmove(void *dest, const void *src, size_t n);목적지 메모리 주소 (dest)소스에서 목적지로 메모리 영역을 복사하는데, 중첩된 영역에 대해서도 안전하게 처리한다.
ft_memchrvoid *ft_memchr(const void *s, int c, size_t n);찾은 문자가 위치한 메모리 주소메모리 영역에서 특정 문자 (c)를 찾아서 해당 위치의 포인터를 반환한다.
ft_memcmpint ft_memcmp(const void *s1, const void *s2, size_t n);0이면 두 메모리 영역이 동일함, 그 외의 경우 두 영역의 차이를 나타내는 값두 메모리 영역을 비교하여 동일한지 여부를 확인하고, 다른 경우에는 첫 번째로 다른 바이트의 차이를 반환한다.
ft_strlensize_t ft_strlen(const char *s);문자열의 길이주어진 문자열의 길이를 반환한다.
ft_strlcpysize_t ft_strlcpy(char *dest, const char *src, size_t size);복사한 문자열의 길이소스 문자열을 대상 문자열로 복사하되, 대상 문자열의 크기를 초과하지 않도록 안전하게 처리한다.
ft_strlcatsize_t ft_strlcat(char *dest, const char *src, size_t size);연결한 문자열의 총 길이대상 문자열의 끝에 소스 문자열을 연결하되, 대상 문자열의 크기를 초과하지 않도록 안전하게 처리한다.
ft_strchrchar *ft_strchr(const char *s, int c);찾은 문자가 위치한 문자열의 포인터문자열에서 특정 문자 (c)를 찾아서 해당 위치의 포인터를 반환한다.
ft_strrchrchar *ft_strrchr(const char *s, int c);찾은 문자가 위치한 문자열의 포인터문자열에서 특정 문자 (c)를 거꾸로 찾아서 해당 위치의 포인터를 반환한다.
ft_strnstrchar *ft_strnstr(const char *haystack, const char *needle, size_t len);찾은 문자열이 위치한 문자열의 포인터 또는 NULL문자열에서 특정 부분 문자열 (needle)을 찾아서 해당 위치의 포인터를 반환한다.
ft_strncmpint ft_strncmp(const char *s1, const char *s2, size_t n);0이면 두 문자열이 동일함, 그 외의 경우 두 문자열의 차이를 나타내는 값두 문자열을 비교하여 동일한지 여부를 확인하고, 다른 경우에는 첫 번째로 다른 문자의 차이를 반환한다.
ft_atoiint ft_atoi(const char *str);변환된 정수 값문자열을 정수로 변환한다.
ft_isalphaint ft_isalpha(int c);0이 아니면 알파벳 문자, 그 외의 경우 0주어진 문자가 알파벳 문자인지 확인한다.
ft_isdigitint ft_isdigit(int c);0이 아니면 숫자, 그 외의 경우 0주어진 문자가 숫자인지 확인한다.
ft_isalnumint ft_isalnum(int c);0이 아니면 알파벳 문자 또는 숫자, 그 외의 경우 0주어진 문자가 알파벳 문자 또는 숫자인지 확인한다.
ft_isasciiint ft_isascii(int c);0이 아니면 ASCII 문자, 그 외의 경우 0주어진 문자가 ASCII 문자인지 확인한다.
ft_isprintint ft_isprint(int c);0이 아니면 printable 문자, 그 외의 경우 0주어진 문자가 출력 가능한 (printable) 문자인지 확인한다.
ft_toupperint ft_toupper(int c);변환된 대문자주어진 소문자 문자를 대문자로 변환한다.
ft_tolowerint ft_tolower(int c);변환된 소문자주어진 대문자 문자를 소문자로 변환한다.
ft_callocvoid *ft_calloc(size_t count, size_t size);새로운 문자열의 포인터주어진 문자열을 복제하여 새로운 메모리에 저장하고 그 포인터를 반환한다.
ft_strdupchar *ft_strdup(const char *s1);할당된 메모리 영역의 포인터주어진 문자열을 복제하여 새로운 메모리에 저장하고 그 포인터를 반환한다.
ft_substrchar *ft_substr(char const *s, unsigned int start, size_t len);새로운 부분 문자열의 포인터주어진 문자열에서 지정된 시작 위치부터 지정된 길이만큼의 부분 문자열을 추출하여 반환한다.
ft_strjoinchar *ft_strjoin(char const *s1, char const *s2);새로운 연결된 문자열의 포인터두 문자열을 연결하여 새로운 문자열을 생성하고 그 포인터를 반환한다.
ft_strtrimchar *ft_strtrim(char const *s1, char const *set);새로운 트리밍된 문자열의 포인터주어진 문자열에서 양쪽 끝에서 공백으로 지정된 문자(set)를 제거한 새로운 문자열의 포인터를 반환한다.
ft_splitchar **ft_split(char const *s, char c);문자열 배열의 포인터주어진 문자열을 지정된 문자 (c)를 기준으로 분할하여 문자열 배열을 생성하고 그 포인터를 반환한다.
ft_itoachar *ft_itoa(int n);변환된 문자열의 포인터정수를 문자열로 변환하여 새로운 문자열을 생성하고 그 포인터를 반환한다.
ft_strmapichar *ft_strmapi(char const *s, char (*f)(unsigned int, char));새로운 변환된 문자열의 포인터주어진 문자열에 지정된 함수를 적용하여 변환된 새로운 문자열을 생성하고 그 포인터를 반환한다.
ft_putchar_fdvoid ft_putchar_fd(char c, int fd);없음 (void)주어진 파일 디스크립터 (fd)로 문자를 출력한다.
ft_putstr_fdvoid ft_putstr_fd(char *s, int fd);없음 (void)주어진 파일 디스크립터 (fd)로 문자열을 출력한다.
ft_putendl_fdvoid ft_putendl_fd(char *s, int fd);없음 (void)주어진 파일 디스크립터 (fd)로 문자열을 출력한 뒤에 개행 문자를 출력한다.
ft_putnbr_fdvoid ft_putnbr_fd(int n, int fd);없음 (void)주어진 파일 디스크립터 (fd)로 정수를 출력한다.

 
 

Libft 후기

42서울에서 Libft가 첫 번째 과제인 것은 아마 이후 과제에서 Libft를 자주 사용하기 때문일 것이다. Libft 과제 이후로 Libft를 사용해도 된다는 과제가 대부분인데 이때 Libft를 자신의 입맛에 맞게 커스터마이징 할 수 있다는 점이 매력적이다. 다른 과제들을 하며 자주 사용되는 함수들을 Libft에 추가한다면 이후 과제를 할 때 반복해서 작성해야 하는 코드도 줄고 한결 편함을 느낄 수 있을 것이다. ft_strsdup - "2차원 배열 복제", ft_atol - "문자열 to long" 등등 자신의 입맛에 맞는 함수를 하나씩 추가하며 앞으로의 과제를 해나간다면 Libft의 진가를 느낄 수 있을 것이다.

728x90
반응형

'대외활동 > 42서울' 카테고리의 다른 글

[42서울] get_next_line 구현 (메모리 누수 잡기, 구현 tip)  (1) 2024.07.21
[42서울] ft_printf 구현 (한 문장으로 구현하는 이진수 보수 연산)  (0) 2024.06.21
[42서울] push_swap 그리디 알고리즘  (2) 2024.03.04
[42서울] Born2beroot 개념 정리 2  (0) 2024.03.04
[42서울] Born2beroot 개념 정리 1  (1) 2024.03.04
'대외활동/42서울' 카테고리의 다른 글
  • [42서울] get_next_line 구현 (메모리 누수 잡기, 구현 tip)
  • [42서울] ft_printf 구현 (한 문장으로 구현하는 이진수 보수 연산)
  • [42서울] push_swap 그리디 알고리즘
  • [42서울] Born2beroot 개념 정리 2
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    단일 사이클
    사설 문제
    백준
    컴퓨터구조
    명령어
    자료구조
    코틀린
    오블완
    C++
    42서울
    컴공 포트폴리오
    메모리 계층 구조
    반복자
    상속
    자바
    추가 문제
    티스토리챌린지
    컴퓨터 구조 및 설계
    데이터패스
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[42서울] Libft 함수 정리와 후기
상단으로

티스토리툴바