반응형

➰ 코딩 부트캠프/42 seoul 29

[0 Circle] Libft - ft_strnstr, ft_strncmp

📌ft_strnstr 문자열 내에서 부분문자열을 탐색하는 함수 char *ft_strnstr(const char *str, const char *to_find, size_t n); ➕ 매개변수 (Parameters) str : 문자열을 검색할 대상 to_find : 검색할 문자열 n : str의 n번째 문자까지만 확인 ➕ 반환값 (Return) char * : 문자열이 존재하면 해당 문자열이 존재하는 곳의 포인터를 반환, 존재하지 않으면 NULL 반환 ➕ 설명 (Description) ➕ 코드 (Code) #include "libft.h" int find_str(const char *str, const char *to_find, int n) { str += n; while (*to_find) { if (..

[0 Circle] Libft - ft_strchr, ft_strrchr

📌ft_strchr src에서 특정 문자를 검색하는 함수 char *ft_strchr(const char *str, int c) ; ➕ 매개변수 (Parameters) str : 검색을 하려는 문자열 c : 검색할 문자 ➕ 반환값 (Return) char * : 문자가 존재하면 해당 문자가 존재하는 곳의 포인터를 반환, 존재하지 않으면 NULL 반환 ➕ 설명 (Description) ➕ 코드 (Code) #include "libft.h" char *ft_strchr(const char *str, int c) { while (*str != '\0') { if (*str == c) return ((char *)str); ++str; } if (c == '\0') return ((..

[0 Circle] Libft - ft_strchr, ft_strrchr

📌ft_strchr src에서 특정 문자를 검색하는 함수 char *ft_strchr(const char *str, int c) ; ➕ 매개변수 (Parameters) str : 검색을 하려는 문자열 c : 검색할 문자 ➕ 반환값 (Return) char * : 문자가 존재하면 해당 문자가 존재하는 곳의 포인터를 반환, 존재하지 않으면 NULL 반환 ➕ 설명 (Description) ➕ 코드 (Code) #include "libft.h" char *ft_strchr(const char *str, int c) { while (*str != '\0') { if (*str == c) return ((char *)str); ++str; } if (c == '\0') return ((..

[0 Circle] Libft - ft_strlcpy, ft_strlcat

📌ft_strlcpy src에서 dst로 값을 size길이 만큼 복사 size_t ft_strlcpy(char *dst, const char *src, size_t dstsize));➕ 매개변수 (Parameters) dst : 채우고자 하는 메모리의 시작 주소 src : 복사하려는 메모리의 시작 주소 dstsize : 채우고자 하는 바이트의 수 ➕ 반환값 (Return) size_t : src의 총 길이 ➕ 설명 (Description) ⚡ 문자열의 끝인 dest[size-1]는 NULL 값으로 채워주기 size가 0일 때 바로 함수 끝내기 dst의 주소가 NULL일 때 NULL반환 ➕ 코드 (Code) #include "libft.h" size_t ft_strlcpy(char *dst, const c..

[0 Circle] Libft - ft_memcmp, ft_strlen

📌ft_memcmp str1과 str2를 n바이트만큼 비교 void *ft_memcmp(const void *str1, const void *str2, unsigned int n);➕ 매개변수 (Parameters) str1 : 비교할 첫번째 메모리의 시작값 str2 : 비교할 두번째 메모리의 시작값 n : 비교할 만큼의 바이트 수 ➕ 반환값 (Return) int : str2가 str1보다 큰 경우 음수 / 작은 경우 양수 / 동일한 경우 0 ➕ 설명 (Description) ➕ 코드 (Code) #include "libft.h" int ft_memcmp(const void *str1, const void *str2, unsigned int n) { unsigned const char *tmp1; un..

[0 Circle] Libft - ft_memmove, ft_memchr

📌ft_memmove 메모리를 이동하는 함수 void*ft_memmove(void *dest, const void *src, unsigned int len) ;➕ 매개변수 (Parameters) dest : 이동하여 저장할 메모리의 시작 주소 src : 이동하려는 메모리의 시작 주소 n : 이동할 바이트의 수 ➕ 반환값 (Return) void * : dest의 포인터 반환 ➕ 설명 (Description) memcpy와 같이 메모리의 내용을 다른 메모리로 옮기는 함수이지만 memmove 함수는 이동할 데이터를 임시 버퍼에 옮긴 후 대상 버퍼오 이동하는 과정을 거치기 때문에 두 메모리가 근점해 있더라도 중첩현상이 발생하지 않는 장점이 있다. ➕ 코드 (Code) #include "libft.h" void..

[0 Circle] Libft - ft_memcpy, ft_memccpy

📌ft_memcpy src메모리영역에서 dest메모리 영역으로 n byte만큼 복사 void *ft_memcpy(void *dest, const void *src, unsigned int n);➕ 매개변수 (Parameters) dest : 채우고자 하는 메모리의 시작 주소 src : 복사하려는 메모리의 시작 주소 n : 채우고자 하는 바이트의 수 ➕ 반환값 (Return) void * : dest의 포인터 반환 ➕ 설명 (Description) strcpy() 함수와의 차이점은 문자열은 문자열의 끝을 Null 바이트로 구분하지만 메모리는 Null 바이트도 데이터이기 때문에 n을 명시적으로 지정해야 한다는 것이다. ➕ 코드 (Code) #include "libft.h" void*ft_memcpy(void..

[0 Circle] Libft - ft_memset, ft_bzero

📌ft_memset 어떤 메모리의 시작점부터 연속된 범위를 어떤 값으로 모두 지정하고 싶을 때 사용 void *ft_memset(void *dst, int val, size_t size);➕ 매개변수 (Parameters) dst : 채우고자 하는 메모리의 시작 주소 val : 메모리에 채우고자하는 값. int형이지만 내부에서는 unsigned char(1 byte)로 변환되어서 저장 size : 채우고자 하는 바이트의 수 ➕ 반환값 (Return) void * : dst 리턴 ➕ 설명 (Description) void * (보이드 포인터)는 주소를 담는 자료형. 주소 연산은 불가능 ➕ 코드 (Code) #include "libft.h" void *ft_memset(void *s, int c, unsig..

Makefile 만들기

📌Makefile 주어진 쉘 명령어들을 조건에 맞게 실행하는 프로그램 target : prerequisites ... recipe ... ... target : make abc에서 abc에 해당 prerequisites : 주어진 타겟을 make할 때 사용될 파일들의 목록 recipes : 주어진 타겟을 make할 때 실행할 명령어들의 나열 (반드시 tab하기) ➕변수 SRCS = ft_memset.c ft_bzero.c OBJS = $(SRCS:.c=.o) NAME = libft.a CC = gcc CF = -Wall -Wextra -Werror$() 안에 변수를 넣어 사용 ➕ 자동 변수 % : * 과 같은 역할 $@ : 타겟의 이름 $< : 의존 파일 목록의 첫번째 파일 $^ : 의존 파일의 목록 전..