[C] 나만의 라이브러리 - substr, strjoin, strtrim, itoa
·
42Seoul/Libft
1. substr 함수 형태 char *my_substr(char const *s, unsigned int start, size_t len); 매개 변수 원본 문자열 문자열 s에 있는 하위 문자열의 시작점 하위 문자열의 길이 반환 값 잘라낸 문자열, 실패시 NULL 반환 설명 malloc(3)를 사용하여 할당하고 문자열 's'에서 하위 문자열을 반환. 하위 문자열은 인덱스 'start'에서 시작되며 최대 크기 'len' 소스 코드 #include "libmy.h" char *my_substr(char const *s, unsigned int start, size_t len) { size_t i; size_t len_s; char *ret; if (!s) retu..
[C] 나만의 라이브러리 - split 함수 구현
·
42Seoul/Libft
split 함수 형태 char **my_split(char const *s, char c); 매개 변수 분할할 문자열 구분 기호 문자 반환 값 분할한 새 문자열 배열, 할당 실패시 NULL 반환 설명 malloc(3)로 할당하고 문자 'c'를 구분 기호로 사용하여 's'를 분할하여 얻은 문자열 배열을 반환하십시오. 배열을 NULL 포인터로 종료해야 함 소스 코드 #include "libmy.h" static int get_row(char const *s, char c) { size_t i; size_t ret; i = 0; ret = 0; while (s[i]) { if (s[i] != c && (s[i + 1] == c || !s[i + 1])) ret++; i++; } return (ret); } s..
[C] 나만의 라이브러리 - atoi, isalpha, isdigit, isalnum, isascii, isprint, toupper, tolower
·
42Seoul/Libft
1. atoi int my_atoi(const char *str); 주어지는 문자열에 연속되는 숫자가 있을 때, 그 숫자를 int형으로 바꾸는 함수 int my_atoi(const char *str) { long sign; long res; while ((*str >= 9 && *str 2147483648) return (0); if (sign == 1 && res > 2147483647) return (-1); str++; } return (sign * res); } 공백(white space) 제거 + or - 가 있을 때 부호 지정 (연속 된다면 0 반환) 연속되는 문자형 숫자를 int형으로 변환 후 부호와 값을 곱하여 반환 2. isalpha int my_isalpha(int c); 매개변수값이 ..
[C] 나만의 라이브러리 - strlen strlcpy strlcat strchr strrchr strnstr strncmp
·
42Seoul/Libft
1. strlen size_t my_strlen(const char *s); 문자열의 길이를 구하는 함수 size_t my_strlen(const char *s) { size_t i; i = 0; while (s[i]) i++; return (i); } 해당 문자열의 끝을 의미하는 \0 값을 찾을때까지 길이를 구한다. 2. strlcpy size_t my_strlcpy(char *dest, const char *src, size_t size); src 에서 size만큼(\0 포함) 복사하는 함수 size_t my_strlcpy(char *dest, const char *src, size_t size) { const char *s; size_t n; s = src; n = size; // n에 size 복..
[C] 나만의 라이브러리 - memset, bzero, memcpy, memccpy, memmove, memchr, memcmp
·
42Seoul/Libft
1. memset void *my_memset(void *s, int c, size_t n); s위치부터 n바이트 만큼 c값으로 초기화하는 함수 void *my_memset(void *s, int c, size_t n) { unsigned char *ptr; ptr = s; while (n--) *ptr++ = (unsigned char)c; return (s); } 메모리의 1바이트씩 체크와 역참조가 불가능한 void 포인터를 unsigned char포인터로 형변환 s의 시작점을 ptr받고 n개 만큼 반복하며 값을 넣어줌 2. bzero void my_bzero(void *s, size_t n); s위치부터 n바이트 만큼 0으로 초기화하는 함수 void my_bzero(void *s, size_t n)..
WONILLISM
'42Seoul/Libft' 카테고리의 글 목록