[42-Seoul/ft_printf] 프로젝트 소개

yebeen·2022년 4월 19일
0

42-Seoul/ft_printf

목록 보기
1/3
post-thumbnail

1. 프로젝트 소개

C에서 printf 함수의 다양한 기능은 우리에게 프로그래밍에 있어서 훌륭한 연습이 됩니다. 이 프로젝트는 다소 어려움이 있습니다. 이를 통해 여러분들은 C언어의 가변 함수를 배울 수 있습니다. 성공적인 ft_printf의 핵심은 체계적이고 확장성 있는 코드입니다.

2. 규칙

  • 프로젝트는 Norm 규칙에 맞춰 작성되어야 합니다. 보너스 파일/함수가 있는 경우, 해당 파일/함수들은 norm 검사에 포함되며, norm error가 있을 시, 0점을 받게 될 것입니다.
  • 정의되지 않은 행동이 발생한다 하더라도 함수 실행 도중 예기치 않게 중단되어서는 안 됩니다.(예를 들어, segmentation fault, bus error, double free 등.) 만약 중단되면, 여러분의 프로젝트는 작동하지 않는 것으로 여겨지고 평가에서 0점을 받을 것입니다.
  • 필요한 경우 heap에 할당된 모든 메모리 공간은 적절하게 해제되어야 합니다. 메모리 누수는 용납되지 않습니다.
  • 해당 과제에서 요구한 경우 Makefile을 제출해야 하며, 해당 Makefile은 문제에서 제시된 결과물을 Wall -Wextra -Werror 플래그가 함께 컴파일해야 합니다. Makefile 은 relink 되어서는 안 됩니다.
  • Makefile은 최소한 $(NAME), all, clean, fclean, re 규칙을 포함해야 합니다.
  • 프로젝트에 보너스를 제출하려면, Makefile에 bonus 규칙을 포함해야 하며, 해당 규칙은 프로젝트의 메인 파트에서 금지되었던 모든 다양한 헤더, 라이브러리, 또는 함수들을 Makefile에 추가할 수 있습니다. 보너스는 반드시 _bonus. {c/h}라는 다른 파일에 있어야 합니다. 필수 파트와 보너스 파트는 개별적으로 평가될 것입니다.
  • 프로젝트에서 libft 사용이 허가된 경우, 해당 소스들과 연관된 Makefile을 libft 폴더에 Makefile과 함께 복사해 넣어두어야 합니다. 프로젝트의 Makefile은 반드시 libft의 Makefile을 사용하여 컴파일한 다음, 프로젝트 소스를 컴파일해야만 합니다.
  • 제출할 필요가 없고 채점되지 않더라도 우리는 여러분이 프로젝트를 위한 테스트 프로그램을 만들 것을 권장합니다. 이 프로그램은 여러분의 과제물과 동료들의 과제물을 쉽게 검증할 기회를 제공할 것입니다. 평가하는 동안 이 테스트 프로그램들이 특히 유용하다는 것을 알게 될 것입니다. 평가 중에는 여러분의 테스트 프로그램과 평가받는 동료의 테스트 프로그램들을 자유롭게 사용할 수 있습니다.
  • 할당된 git 저장소에 과제물을 제출하세요. 오직 git 저장소에 있는 과제물만 채점할 것입니다. Deepthought가 평가를 하게 된다면, 동료평가 이후에 수행됩니다. 만약 Deepthought가 평가 중 오류가 발생한다면, 그 즉시 평가는 중지될 것입니다.

3. 필수 사항

프로그램 이름libftprinf.a
제출할 파일.c, /.c, .h, /.h, Makefile
Makefileall, clean, fclean, re, bonus
사용 가능한 외부함수malloc, free, write, va_start, va_arg, va_copy, va_end
Libft사용가능
설명실제 printf의 모방 함수인 ft_printf가 포함된 라이브러리를 작성하라.

4. 고려사항

  • ft_printf의 프로토타입은 int ft_printf(const char , ...); 이어야 합니다.
  • 당신은 libc의 printf 함수를 다시 구현해야 합니다.
  • 실제 printf 함수처럼 버퍼 관리를 수행해서는 안 됩니다.
  • 다음과 같은 서식 지정자들을 구현할 것입니다: cspdiuxX%
  • 모든 서식 문자에서 0.* 플래그와 최소 필드 너비의 조합을 어떤 조합도 처리할 것입니다.
  • 실제 printf 함수와 비교될 것입니다.
  • 라이브러리를 생성할 때에는 ar 명령어를 이용하세요. libtool 명령어는 허용되지 않습니다.
  • man 3 printf / man 3 stdarg

5. 보너스

  • 보너스 파트는 매우 어렵고 지랄 같으니 하지 말 것!
  • 필수 부분이 완벽하지 않으면 보너스는 생각하지도 마세요
    - 보너스를 모두 달성할 필요는 없습니다.
    - 다음 중 하나 이상의 변환을 구현하세요: nfge
    - 다음 중 하나 이상의 플래그를 구현하세요: l ll h hh
    - 다음의 모든 플래그를 구현하세요: # + (네, 맞습니다. 하나는 공백이에요.)
profile
🐣🐥

0개의 댓글