Dia Egg - Shugo Chara
728x90
반응형

C 30

연결리스트 정리

연결리스트(linked list) 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 작성하는 자료구조. typedef struct s_list { void*content; struct s_list*next; }t_list; 나는 이렇게 노드를 작성했는데, 이렇게 한 구조체 안에 다음 노드의 주소가 들어있는 형식이라고 보면된다. 연결리스트 의 처음 노드 가장 첫번째 노드를 가르킬 포인터가 항상 존재해야 한다. 그래야 앞부분을 수정해도 리스트의 연결을 잊어버리지 않을 수 있기 때문이다. 보통은 이 첫번째 노드를 가르킬 포인터를 head라고 하는데, t_list* head; void init() { head = NULL; } 이런식으로 초기화 하여 사용한다. 연결리스트가 비어있는 것..

C 2023.10.25

파일 입출력

유닉스에서 파일을 읽고 쓰는 방식은 저수준 파일 입출력과 고수준 파일 입출력으로 구분할 수 있다. 저수준 파일 입출력 저수준 파일 입출력은 유닉스 커널(시스템에 존재하는 시스템 자원 관리, 메모리 관리, 프로세스 관리, 파일관리, 입출력관리, 프로세스간 상호 통신을 담당)의 시스템을 호출하여 파일입출력을 수행한다. 저수준 파일 입출력은 시스템 호출을 이용하므로 파일에 좀더 빠르게 접근 할 수 있다. 또 바이트 단위로 파일을 다루므로 일반 파일 뿐 아니라 특수 파일(데이터 전송, 장치 접근에 사용하는 파일)도 읽고 작성할 수 있다. 그러나 바이트 단위로만 입출력을 수행하여 이를 이용하여 응용 프로그램을 작성하려면 바이트를 적당한 형태의 데이터로 변환하는 함수등 여러가지 추가적인 기능을 구현해야 함. 파일 ..

C 2023.10.23

strdup 함수의 구현

strdup 함수 string.h 헤더파일에 속한 함수 원형은 char *strdup(const char *s1)을 따른다. 주어진 s1의 크기만큼 동적 할당을 한 뒤 s1을 그 위치에 복사 해주는 함수 (마지막 널문자도 고려해줘야하므로 +1 만큼 더 할당해 넘겨줄것) 리턴 값은 새로운 문자열의 주소이다. strdup 함수의 구현 #include "libft.h" char*ft_strdup(const char *s1) { char*tmp; tmp = malloc(ft_strlen(s1) + 1); if (tmp == NULL) return (0); ft_strlcpy(tmp, s1, ft_strlen(s1) + 1); return (tmp); } // #include // #include // intma..

C 2023.10.21

calloc 함수 구현

calloc 함수 stdlib.h라는 헤더파일에 정리된 함수 원형은 void *calloc(size_t count, size_t size)을 따른다. count * size 만큼의 연속적인 공간을 할당하고 각각의 바이트의 메모리는 할단된 메모리에 포인터를 반환하며, 할당된 공간은 값이 0인 바이트로 차있다. (숫자 0) 할당이 성공하면 할당된 메모리의 포인터를 반환하고 실패하면 null포인터를 반환한다. calloc 함수 구현 void*ft_calloc(size_t count, size_t size) { void*tmp; tmp = malloc(count * size); if (tmp == NULL) return (0); ft_bzero(tmp, count * size); return (tmp); } /..

C 2023.10.21

strnstr 함수의 구현

strnstr 함수 string.h 헤더 파일에 포함되어있는 함수 원형은 char *strnstr(const char *haystack, const char *needle, size_t len)을 따른다. 문자열 haystack에서 길이 len 안에 문자열 needle이 있는지를 검사하는 함수이다. 즉 문자열안에서 문자열을 찾는것이다. 대소문자는 고려한다. 찾는다면 찾은 지점의 첫번째 포인터 값을 반환하고 못찾았다면 NULL을 반환한다. 찾아야하는 문자열이 빈 문자열이라면 haystack에서 받아온것을 그대로 반환해준다. ('\0') strnstr 함수의 구현 static intcheckstr(const char *haystack, const char *needle, size_t i) { size_tco..

C 2023.10.17

memchr 함수의 구현 (mem함수와 str함수의 차이)

memchr 함수 string.h헤더 파일에 속한 함수. 원형은 void *memchr(const void *s, int c, size_t n)을 따른다. 문자열 s에서 c의 첫번째 발생을 찾는다. 찾으면 그 포인터를 반환하고 찾지못하면 null을 반환. mem함수와 str함수의 차이 str함수는 문자열을 검사하기 위한 함수라 '\0' 로, 혹은 넘겨 받은 길이를 통해 종료시점을 알 수 있다. 하지만 mem함수는 숫자, 구조체, 문자열 등 다양한 구조에서 사용하기 위한 목적으로 만들어진 함수이기 떄문에 매개변수로 받는 size만을 콩해 종료시점을 가진다. memchr 함수의 구현 void*ft_memchr(const void *s, int c, size_t n) { size_ti; void*tmp; i ..

C 2023.10.16

strncmp 함수의 구현

strncmp 함수 string.h 헤더파일에 속한 함수. 원형은 int strncmp(const char *s1, const char *s2, size_t n)를 따른다. null로 끝난 s1, s2문자열들을 비교한다. n개 이하의 문자를 비교한다. s1 > s2 인 경우 양수, s1 < s2 인 경우 음수, 같은 경우 0을 반환한다. strncmp 함수의 구현 intft_strncmp(const char *s1, const char *s2, size_t n) { size_ti; i = 0; if (n == 0) return (0); while (i < n && s1[i] != '\0' && s2[i] != '\0') { if (s1[i] != s2[i]) return (((unsigned char *..

C 2023.10.16

strrchr 함수의 구현

strrchr 함수 string.h 라는 헤더파일에 속한 함수 원형은 char *strrchr(const char *s, int c)을 따른다. strchr함수가 c의 첫번째 발생을 찾는다면 strrchr함수는 c의 마지막 발생을 찾는 함수이다. 찾은 문자에 대한 주소를 반환하거나 문자열에 해당 문자가 없다면 null을 반환한다. strrchr 함수의 구현 char*ft_strrchr(const char *s, int c) { inti; char*tmp; char*result; i = 0; tmp = (char *)s; result = 0; c = c % 256; while (tmp[i] != '\0') { if (tmp[i] == c) result = &tmp[i]; i++; } if (c == '\0..

C 2023.10.16
728x90
반응형