〖Libft〗 ➁

hyeonjin-dot·2021년 1월 19일
1

42seoul

목록 보기
3/7

구현할 함수는 Part.1 Part.2 Bonus Part로 구성되어 있다.
난이도는 사실상 숫자 순으로 이루어져 있지만, Part.1은 양이 많고,
Part.2는 극악인 함수가 사이사이에 포함되어 있고,
Bonus Part는 낯선 구조체라는 특성상 고르게 다 어려운 편이긴 하다.
~~난이도 조절이 아주...😥~~

Part.1

Part.1에서 가장 기억에 남는 or 어려운 함수들을 언급해 보려 한다.

ft_strnstr.c

char *ft_strnstr(const char *big, const char *lit, size_t len)

가장 마지막까지 붙잡은 함수 😫

  • segmentaion fault가 일어나야 할 곳에서 잘 일어나는가
  • (null)이 아닌 공백이 출력되어야 하는 곳에서 잘 일어나는가
  • 존재하는 strnstr함수와 비교하였을 때 같은 값이 출력되는가

이 3가지만 잘 확인해도, 조금 더 빠르게 통과 할 수 있다....
~~본인의 경험을 담은 것,,, 이 글을 보시는,,, 카뎃,,,, 명심하십쇼,,~~

또한 이 함수을 공부하면서 배운 것이 있는데

char *new;
new = 0; // new = (void*)0;
new; // 이것을 출력하면 (null)이고
*new; // 연산이 되지 않아 오류가 발생한다.
char *new;
new = ""; // new가 존재하지만 가리키는 것이 없음
new; // 이것을 출력하면 아무것도 출력되지 않음
*new; // 이것도 아무것도 출력되지 않음

위 두가지의 차이를 잘 이해해야한다.
strnstr을 구현하기 위해 대부분 두가지의 방법을 사용한 것을 봤는데

  • 다른 함수 활용하기
  • 이중으로 while문이나 if문 사용하기

둘다 구현해본 결과, 다른 함수를 활용하는 것이 코드 길이가 더 짧지만 이중으로 반복문이나 판단문을 활용하여도 norm이 원하는 조건을 만족한다.
만약 다른 함수를 활용하여 구현하려면, 필요한 다른 함수를 이해하는 것이 중요하다.
len과 ft_strlen(lit)의 관계도 조심해야한다.

ft_atoi

int ft_atoi(const char *str)

피신 기간에 제일 어려움을 겪었던 함수들 중 하나다.
예상 못했던 순간에 직면하고, 다른 기회에 또 직면하였지만, 결국 구현하지 못한 함수이다.
예외 부분을 잘 처리해주는 것이 중요하고, 처음에 나오는 부호를 처리해 주는 것도 중요하다.
그러나 이 함수에서 가장 중요한 것은 코드의 길이 조절‼️
다른 함수로 빼서 구현하기에 애매한 부분이 많아서 (~~아직 능력이 부족한 이유도 있겠지만~~) 한개의 판단문에 꾸역꾸역 넣었던 것 같다.

ft_strlen

size_t ft_strlen(const char *str)

어려운 함수는 아니지만 가장 많이 활용되는 함수이다.

profile
응애 나 애기 블로거

2개의 댓글

comment-user-thumbnail
2021년 1월 19일

다양한 함수를 직접 구현해보셨군요~ 좋은 경험이 되었겠네요ㅎㅎ 끝까지 화이팅 하세요 :)

1개의 답글