전체 글 212

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

libft - strlcpy, strlcat, strncmo

strlcpy strlcpy 함수 헤더 파일: 함수 원형: char* strlcpy(char* dest, const char* origin, size_t size); 정의: 문자열을 복사해주는 함수이다. dest안에 src의 값 size만큼을 복사해준다. size는 src의 길이 이하 일 때 이용됨. strlcpy는 src의 ‘\0’ 값을 만나기 전 혹은 size -1 만큼 복사가 이루어졌을 때 복사를 중지한다. 쉽게 설명해보자 이 친구는 dest, src, size가 있는데 src의 문자열을 dest에 복사해줌, 그리고 리턴은 src의 길이를 리턴 size는 src의 길이보다 작아도 됨 ex) src = “123456”, size = 5 리턴값은 src의 길이인 6 dest은 “1234” 이렇게 들어감..

42Seoul/libft 2023.03.24

libft - bzero, memcpy, memove

bezro 함수원형 voidft_bzero(void *dest, size_t len); dest는 저장할 메모리 주소 시작 지점 len은 얼마의 바이트 수 만큼 넣을 것이냐임. 메모리 안에 채워지는 데이터는 0임 #include "libft.h" voidft_bzero(void *dest, size_t len) { unsigned char*temp; size_ti; unsigned intzero; zero = 0; temp = (unsigned char *)dest; i = 0; while (i < len) { temp[i++] = (unsigned int)zero; } } 참고 사이트 memset, bzero 함수 구현 memset, bzero 함수 구현 틀린 내용이나 지식이 있다면 댓글로 알려주세요!..

42Seoul/libft 2023.03.24