분류 전체보기 205

libft Bonus - lstdelone, lstclear, lstiter, lstmap

lstdelone voidft_lstdelone(t_list *lst, void (*del)(void *)) 현재 가리키고 있는 노드를 삭제 시킴. free lst와 free content #include "libft.h" voidft_lstdelone(t_list *lst, void (*del)(void *)) { if (lst == NULL || del == NULL) return ; del(lst -> content); free(lst); } 참고 사이트 ft_lstdelone 구현 ft_lstdelone 구현 lst가 NULL이면 리스트가 비어 있다는 뜻. 이 때에는 삭제할 리스트가 없는 것이므로 return; del()함수가 NULL이면 lst의 content를 free하는 기능을 수행하지 못하..

42Seoul/libft 2023.03.24

libft Bonus - lstnew, lstadd_front, lstsize

lstnew 새로운 노드를 생성하는 함수 #include "libft.h" t_list*ft_lstnew(void *content) { t_list*result; result = (t_list *)malloc(sizeof(t_list)); if (result) { result->content = content; result->next = NULL; } return (result); } 참고 사이트 lst함수들에 대해서(lstnew, lstadd_front, lstadd_back, lst_size) lst함수들에 대해서(lstnew, lstadd_front, lstadd_back, lst_size) 틀린 내용이 있다면 댓글로 알려주세요! 감사합니다 :) 💡 lstnew 에 대하여 struct s_list ..

42Seoul/libft 2023.03.24

libft Bonus - Makefile

Bonus 파트를 구현하기 위해서는 makefile에 bonus를 추가해주어야 한다. 그런데 리링크 방지를 하기위한 코드를 짜야하는데 그 방법이 무엇일까? WITH_BONUS라는 것을 하나 만들어서 수행을 할 때 어떤 파일을 들고 올 것인지에 대해 넣어준다. ifdef, endif를 넣어주어서 makefile을 만들게 되면 리링크 방지를 할 수 있다. 왜? OBJ에서 필요한 파일들 즉, OBJS와 OBJS_BONUS가 바뀐 부분이 있는지 체크를 한 후 바뀐 게 없으면 리링크가 되지 않는다. CC = gcc CFLAGS = -Wall -Wextra -Werror NAME = libft.a # SRCS = $(wildcard *.c) SRCS = ft_isalpha.c ft_isdigit.c ft_isaln..

42Seoul/libft 2023.03.24

libft - ft_putchar_fd, ft_putstr_fd, ft_putendl_fd, ft_putnbr_fd

ft_putchar_fd 우리가 write를 쓸 때 표준 출력으로 write(1, &c, 1); 이렇게 많이 사용했음 그런데 개발자들이 사람들을 write를 쓸 때 0: 표준 에러 1: 표준 출력 2: 표준 입력 이렇게 하였고 fd가 들어온다는 말은 파일이 들어오는데 순서가 3번째로 됨 fd가 순서를 정해줌 #include "libft.h" voidft_putchar_fd(char c, int fd) { write(fd, &c, 1); } ft_putstr_fd write로 출력 #include "libft.h" voidft_putstr_fd(char *s, int fd) { inti; i = 0; while (s[i] != '\\0') { write(fd, &s[i], 1); i++; } } ft_pu..

42Seoul/libft 2023.03.24

libft - strtrim, striteri, split

strtrim (공백)Hello world! 가 있으면 set : H(공백)e! 첫번 째 시작 점 찾기: (첫 번째) l 끝났으니 뒤에서 부터 마지막 지점 찾기: d llo world까지 출력 char s[100] = "lorem ipsum dolor sit amet"; char set[6] = "l "; 결과값 :orem ipsum dolor sit amet char s[100] = " lorem ipsum dolor sit amet "; char set[6] = "l "; 결과값 :orem ipsum dolor sit amet 실패 코드 #include "libft.h" intfirst_word(char const *s1, char const *set) { inti; intj; j = 0; i = 0..

42Seoul/libft 2023.03.24

libft - strjoin, itoa, strmapi

strjoin 이번에 포인터로 문제를 풀어보았음 이 함수에서는 s1문자열과 s2 문자열을 합해서 리턴을 해야함. malloc을 사용해 메모리 할당을 받은 공간에 문자를 합쳐서 리턴을 해주어야함. #include "libft.h" char*ft_strjoin(char const *s1, char const *s2) { intcount; char*temp; count = strlen(s1); count += strlen(s2); temp = (char *)malloc(sizeof(char) * count + 1); if (!temp) return (0); while (*s1) { *temp = *s1; s1++; temp++; } while (*s2) { *temp = *s2; s2++; temp++; } ..

42Seoul/libft 2023.03.24

libft - strdup, strlen, substr

strdup strdup는 스트링을 복제해서 할당된 메모리에 넣고 리턴을 해주는 친구임 malloc을 사용해야함. 함수 원형 char*ft_strdup(const char *string) 구현 #include "libft.h" char*ft_strdup(const char *string) { char*temp; inti; intcount; i = 0; count = strlen(string); temp = (char *)malloc(count * sizeof(char) + 1); while (string[i]) { temp[i] = string[i]; i++; } temp[i] = '\\0'; return (temp); } 참고 사이트 strdup() — 스트링 복제 strdup() — 스트링 복제 형식..

42Seoul/libft 2023.03.24

libft - strnstr, atoi, calloc

strntr 함수 원형 char*ft_strnstr(const char *str, const char *substr, size_t len) str에서 substr을 찾을 것임. 단, len만큼 찾을 것임 똑같은 값을 찾더라도 len이 충족되지 않으면 (NULL)리턴 substr에 아무것도 없으면 str리턴 substr, str에 아무것도 없으면 str리턴 #include "libft.h" char*ft_strnstr(const char *str, const char *substr, size_t len) { char*s1; char*s2; size_tcount; if (*substr == 0 && *str == 0) return ((char *)str); if (*substr == 0) return ((c..

42Seoul/libft 2023.03.24

libft - strrchr, memchr, memcmp

strrchr 함수원형 char*ft_strrchr(const char *s, int c) strrchr() 함수 s 문자열 처음부터 c와 같은 문자를 찾을 때까지 루프를 돈다. c와 같은 문자를 찾으면 현재 s 포인터의 위치를 내부에서 임시로 저장해놓고 계속 루프를 돈다. 또 c 와 같은 문자를 찾으면 다시 임시로 저장한 후 c 와 같은 문자열이 없으면 아까 찾은 문자의 주소를 리턴한다. 이 밑에 코드는 세그먼트 fault나옴 왜 그럴까? 이미 주소값을 통해 연결된 second에 또 새로운 주소값을 연결하려고 해서 그럼 #include "libft.h" #include char*ft_strrchr(const char *s, int c) { char *temp = (char *)s; char *secon..

42Seoul/libft 2023.03.24