[Libft] 서브젝트

sugyeonghh·2022년 2월 17일
0

42SEOUL

목록 보기
2/3
post-thumbnail

Introduction

42에서는 사용할 수 없는 라이브러리와 함수가 많다. stdio.h조차 쉽게 허용하지 않는다. 그렇기 때문에 필요한 함수를 직접 구현해서 사용해야 해서 다소 귀찮을 때가 많은데, libft는 이 기본적이고 자주 사용하는 함수들을 구현해놓는 작업이다.

구현해야 하는 함수 중에 혼자 코딩하면서 사용하던 함수도 많았지만, 그렇지 않은 함수도 많았기에 함수의 동작을 먼저 공부하는 데 힘썼다.
사실 함수의 동작 메뉴얼을 영어로 읽어서 이해했기 때문에 동작의 어려움보다 영어를 해석하는 게 더 힘들었다.

함수의 정확한 동작을 완벽하게 이해할 수 있던 프로젝트였다. 메모리에 데이터가 쓰여지는 과정을 많이 공부할 수 있었다.


Common Instructions

  • 코드는 norm 규칙에 따라 작성되어야 한다. 만약 보너스 파일/함수가 있는 경우 해당 파일/함수는 norm check에 포함되고, 만약 norm error가 있다면 0점을 부여받는다.
  • segmentation fault, bus error, double free 등의 예기치 못한 이유로 끝나지 않아야 한다. 만약 그럴 경우, 평가에서 0점을 받게 된다.
  • 모든 할당된 힙 메모리 영역은 free 되어야 한다. 메모리 누수는 허용되지 않는다.
  • 서브젝트에서 필요하다면, -Wall, -Wextra, -Werror flag를 사용해 소스파일을 필수 출력으로 컴파일하는 Makefile을 제출해야 한다. 그리고 Makefile은 relink되어서는 안 된다.
  • Makefile는 최소한 $(NAME), all, clean, fclean, re 규칙을 포함해야 한다.
  • 보너스 파트를 제출하기 위해서는, 프로젝트의 메인 파트에서 금지된 모든 다양한 헤더, 라이브러리 또는 함수들을 추가하는 보너스 규칙을 Makefile에 포함시켜야 한다. 보너스는 반드시 _bonus.{c/h}라는 다른 파일에 있어야 한다. 필수 파트와 보너스 파트는 별도로 평가된다.
  • 만약 프로젝트가 libft를 허용할 경우, 해당 소스파일 및 Makefile을 libft 폴더 안에 복사해야 한다. 프로젝트의 Makefile은 이 라이브러리를 해당 Makefile로 컴파일 하고, 그 이후에 프로젝트를 컴파일 해야 한다.
  • 프로젝트에 대한 테스트 프로그램은 제출할 필요가 없고 채점되지 않지만, 만드는 것을 권장한다. 테스트 프로그램은 당신의 프로젝트와 당신의 동료의 프로젝트를 쉽게 테스트해볼 수 있는 기회를 제공할 것이다. 이것이 defence 에서 유용할 것이라는 걸 알게될 것이다. 사실, defence동안, 당신은 당신의 테스트 프로그램과 당신이 평가하는 동료의 테스트 프로그램을 자유롭게 사용할 수 있다.
  • 할당된 git repository에 작업물을 제출하라. git repository에 있는 작업만이 채점될 것이다. 만약 평가하기 위해 Deepthought가 할당되었다면, 동료 평가 이후에 끝날 것이다. 만약 Deepthought로 평가하는 동안 어느 파트에서라도 error가 발생하면, 평가가 중단될 것이다.

Mandatory part

Technical considerations

  • global 변수 금지
  • 만약 sub 함수들이 필요한 경우, 이 sub 함수들이 당신의 라이브러리에 함께 올려지지 않으려면 static으로 작성해야 한다. 이건 나중에 당신의 프로젝트를 위해서도 좋은 습관이 될 것이다.

1. Part 1 - Libc functions

  • ft_memset
  • ft_bzero
  • ft_memcpy
  • ft_memccpy
  • ft_memmove
  • ft_memchr
  • ft_memcmp
  • ft_strlen
  • ft_strlcpy
  • ft_strlcat
  • ft_strchr
  • ft_strrchr
  • ft_strnstr
  • ft_strncmp
  • ft_atoi
  • ft_isalpha
  • ft_isdigit
  • ft_isalnum
  • ft_isascii
  • ft_isprint
  • ft_toupper
  • ft_tolower
  • ft_calloc
  • ft_strdup

2. Part 2 - Additional functions

  • ft_substr
  • ft_strjoin
  • ft_strtrim
  • ft_split
  • ft_itoa
  • ft_strmapi
  • ft_putchar_fd
  • ft_putstr_fd
  • ft_putendl_fd
  • ft_putnbr_fd

Bonus part

Linked list functions

  • ft_lstnew
  • ft_lstadd_front
  • ft_lstsize
  • ft_lstlast
  • ft_lstadd_back
  • ft_lstdelone
  • ft_lstclear
  • ft_lstiter
  • ft_lstmap
profile
우당탕탕 뿌엥🥺

0개의 댓글