Home Libft ① Subject
Post
Cancel

Libft ① Subject

thumbnail

Summary
이 프로젝트는 C 라이브러리를 코딩하는 것입니다. 여기에는 프로그램에 의존할 많은 범용 기능이 포함되어 있습니다.

Introduction

C 프로그래밍은 매우 유용한 표준 함수에 접근할 수 없을 때 매우 지루할 수 있습니다. 이 프로젝트를 통해 해당 기능을 다시 작성하고 이해하며 사용법을 배울 수 있습니다. 이 도서관이 앞으로의 모든 C 프로젝트를 도와줄 것입니다. 1년 내내 시간을 내서 당신의 libft를 확장하세요. 그러나 항상 어떤 기능이 허용되는지 확인해야 합니다!

Common Instructions

  • 당신의 프로젝트는 반드시 C로 작성되어야 합니다.
  • 당신의 프로젝트는 Norm에 따라 작성되어야 합니다. 보너스 파일/함수가 있는 경우 해당 파일/함수가 Norm 검사에 포함되며 내부에 Norm 오류가 있으면 0을 받게 됩니다.
  • 정의되지 않은 동작과 별도로 함수가 예기치 않게 종료되어서는 안 됩니다(segmentation fault, bus error, double free 등). 이렇게 되면 당신의 프로젝트는 작동하지 않는 것으로 간주되며 평가 중에 0점을 받습니다.
  • 필요한 경우 할당된 모든 힙 메모리 공간을 적절하게 확보해야 합니다. Leak는 용납되지 않습니다.
  • 제목에 필요한 경우 원본 파일을 필요한 출력으로 컴파일할 Makefile을 제출해야 합니다. 플래그가 -Wall, -Wextra-Werror인 경우 cc를 사용하고 Makefile을 다시 링크하지 마십시오.
  • Makefile에는 적어도 $(NAME), all, clean, fcleanre 규칙이 포함되어야 합니다.
  • 프로젝트에 보너스를 제출하려면 Makefile에 규칙 보너스를 포함해야 합니다. 이 규칙 보너스는 프로젝트의 주요 부분에서 금지된 모든 다양한 헤더, 라이브러리 또는 함수를 추가합니다. 보너스는 다른 파일 _bonus에 있어야 합니다.제목에 다른 내용이 지정되지 않은 경우 {c/h}을(를) 선택합니다. 필수 및 보너스 부분 평가는 별도로 진행됩니다.
  • 프로젝트에서 libft를 사용할 수 있는 경우 해당 소스 및 연결된 Makefile을 연결된 Makefilelibft 폴더에 복사해야 합니다. 프로젝트의 MakefileMakefile을 사용하여 라이브러리를 컴파일한 다음 프로젝트를 컴파일해야 합니다.
  • 테스트 프로그램은 제출하지 않아도 되고 채점이 되지 않지만 귀하의 프로젝트를 위해서 만들 것을 권장합니다. 그것은 당신의 작업과 동료들의 작업을 쉽게 테스트할 수 있는 기회를 줄 것입니다. defense동안 그 테스트들이 특히 유용하다는 것을 알게 될 것입니다. 실제로 defense하는 동안, 당신은 당신의 테스트 또는 당신이 평가하는 동료의 테스트를 자유롭게 사용할 수 있습니다.
  • 할당된 git 저장소에 작업을 제출합니다. 깃 저장소의 작업만 등급이 매겨집니다. Deepthought가 당신의 작품을 채점하도록 지정되면, 동료 평가 후에 작업이 완료됩니다. Deepthought의 평가 작업 중에 작업 부분에서 오류가 발생하면 평가가 중단됩니다.

Mandatory part

Technical considerations

  • 전역 변수를 선언하는 것은 금지되어 있습니다.
  • 보다 복잡한 기능을 분할하기 위해 helper function이 필요한 경우 정적 함수로 정의합니다. 이렇게 하면 해당 함수의 범위가 해당 파일로 제한됩니다.
  • 모든 파일을 리포지토리의 루트에 배치합니다.
  • 사용하지 않는 파일을 제출하는 것은 금지되어 있습니다.
  • 모든 .c 파일은 -Wall -Wextra -Werror 플래그를 사용하여 컴파일해야 합니다.
  • 라이브러리를 만들려면 명령어를 사용해야 합니다. libtool 명령은 사용할 수 없습니다.
  • libft.a는 리포지토리의 루트에 생성되어야 합니다.

Libc functions

이 첫 번째 파트에서는 man에 정의된 대로 libc 함수 집합을 다시 코드화해야 합니다. 당신의 함수는 원본과 동일한 프로토타입과 동작을 보여줘야 합니다. 함수 이름 앞에는 “ft_“가 와야 합니다. 예를 들어 stren은 ft_stren이 됩니다.

  • isalpha
  • isdigit
  • isalnum
  • isascii
  • isprint
  • strlen
  • memset
  • bzero
  • memcpy
  • memmove
  • strlcpy
  • strlcat
  • toupper
  • tolower
  • strchr
  • strrchr
  • strncmp
  • memchr
  • memcmp
  • strnstr
  • atoi
  • calloc
  • strdup

Additional functions

이 두 번째 파트에서는 libc에 없거나, 그것의 일부이지만 다른 형태의 함수 들을 개발해야 한다.

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

Bonus part

필수 부분을 완료했다면 주저하지 말고 이 추가 부분을 더 진행하세요. 성공적으로 통과되면 보너스 점수를 얻을 수 있습니다. 메모리와 문자열을 조작하는 기능은 매우 유용합니다. 그러나 리스트를 조작하는 것이 훨씬 더 유용하다는 것을 곧 알게 될 것이다. 목록의 노드를 나타내려면 다음 구조체를 사용해야 합니다. libft.h 파일에 아래의 선언을 추가합니다.

1
2
3
4
5
typedef struct s_list
{
void *content;
struct s_list *next;
} t_list

t_list 구조체의 멤버는 다음과 같다:

  • content
    노드에 포함된 데이터.
    void *를 사용하면 모든 종류의 데이터를 저장할 수 있습니다.
  • next
    다음 노드의 주소.
    다음 노드가 마지막 노드인 경우 NULL.

Makefile에서 보너스 함수를 libft.a에 추가할 make bonus 규칙을 추가합니다.

목록을 쉽게 사용할 수 있도록 다음 기능을 구현하십시오.

  • ft_lstnew
  • ft_lstadd_front
  • ft_lstsize
  • ft_lstlast
  • ft_lstadd_back
  • ft_lstdelone
  • ft_lstclear
  • ft_lstiter
  • ft_lstmap
This post is licensed under CC BY 4.0 by the author.

[C언어] 다양한 포인터

Makefile