ft_isalpha
int ft_isalpha(int c);
매개변수로 들어온 값이 알파벳인지 아닌지 판단
매개변수
c : 아스키코드 값
반환값
매개변수 값이 알파벳이면 0, 아니라면 0이 아닌 정수를 리턴
ft_isdigit
int ft_isdigit(int c);
매개변수로 들어온 값이 10진수 숫자인지 아닌지 판단
매개변수
c : 아스키코드 값
반환값
매개변수 값이 10진수 숫자이면 0이 아닌 정수, 아니면 0 리턴
ft_isalnum
int ft_isalnum(int c);
매개변수로 들어온 값이 알파벳 혹은 10진수 숫자인지 아닌지 판단
매개변수
c : 아스키코드 값
반환값
매개변수 값이 알파벳 혹은 10진수 숫자이면 0이 아닌 정수, 아니면 0 리턴
ft_isascii
int ft_isascii(int c);
매개변수로 들어온 값이 아스키코드 값인지 아닌지 판단
매개변수
c : 아스키코드 값
반환값
매개변수 값이 아스키코드 값(0 ~ 127)이면 0이 아닌 값 리턴, 아니면 0리턴
주의사항
아스키코드 값 0이 들어왔을때 그대로 c를 리턴하면 아스키코드 값이 아니라는 의미의 0이 리턴 될 수 있음
ft_isprint
int ft_isprint(int c);
매개변수로 들어온 값이 인쇄 가능한 문자인지 아닌지 판단
매개변수
c : 아스키코드 값
반환값
매개변수 값이 인쇄 가능한 문자(32 ~ 126) 이면 양의 정수, 아니면 0 리턴
ft_strlen
size_t ft_strlen(const char *str);
문자열 str의 길이를 반환
매개변수
str : 길이를 셀 문자열
반환값
문자열의 길이 반환
ft_memset
void *ft_memset(void *ptr, int c, size_t n);
ptr가 가리키는 곳부터 n만큼 c값을 세팅
매개변수
ptr : 세팅하고자 하는 메모리의 시작 주소
c : 메모리에 세팅하고자 하는 값
n : 세팅하고자 하는 길이
반환값
ptr의 시작주소 반환
실패시 NULL
ft_bzero
void ft_bzero(void *ptr, size_t n);
ptr가 가리키는 곳부터 n만큼 0으로 세팅
매개변수
ptr : 세팅하고자 하는 메모리의 시작 주소
반환값
없음
주의사항
bzero는 deprecated(더 이상 사용되지 않는 == 안전하지 못한 방법) 이므로 memset을 사용하는 것을 권장
ft_memcpy
void *ft_memcpy(void *dest, const void *src, size_t n);
src가 가리키는 곳의 값을 dest가 가리키는 곳에 n만큼 복사
매개변수
dest : 복사받을 메모리의 시작 주소
src : 복사할 메모리의 시작 주소
n : 복사할 데이터의 길이
반환값
dest의 시작 주소
dest = src이면 NULL
dest 혹은 src가 NULL이면 segmentation fault
주의사항
src의 메모리 블럭과 dest의 메모리 블럭이 겹쳐져 있는 곳에는 사용하지 못함
ft_memmove
void *ft_memmove(void *dest, const void *src, size_t n);
src가 가리키는 곳의 값을 dest가 가리키는 곳에 n만큼 복사
매개변수
dest : 복사받을 메모리의 시작 주소
src : 복사할 메모리의 시작 주소
n : 복사할 데이터의 길이
반환값
dest의 시작 주소
주의사항
dest가 src보다 앞쪽에 있을때, 뒤쪽에 있을때를 구분해야함
구분하지 않고 앞부터 순차적으로 복사한다면, src의 원래값을 잃고 새롭게 복사된 값을 계속 복사하게 됨
dest > src (dest가 src보다 앞쪽에 있을때) : 뒤에서부터 복사
dest < src (dest가 src보다 뒤쪽에 있을때) : 앞에서부터 복사
ft_strlcpy
size_t ft_strlcpy(char *dest, const char *src, size_t n);
src가 가리키는 곳의 값을 dest가 가리키는 곳에 n - 1만큼 복사
매개변수
dest : 복사받을 문자열의 시작 주소
src : 복사할 문자열의 시작 주소
n : 복사할 데이터의 길이
반환값
복사하려한 문자열(src)의 길이
주의사항
문자열의 마지막에 NULL값을 넣어야 하기 때문에 n - 1만큼 복사 진행
ft_strlcat
size_t ft_strlcat(char *dest, const char *src, size_t n);
문자열 dest의 뒤에 문자열 src을 n - 1만큼 연결
매개변수
dest : 연결당할 문자열의 시작 주소
src : 연결할 문자열의 시작 주소
n : 연결할 데이터의 길이
반환값
n <= dest이면 src의 길이 + n
dest의 길이 + src의 길이
주의사항
n <= dest이면 문자열 연결 X
문자열의 마지막 값에 NULL을 넣어야 하기 때문에 n - 1만큼 연결
ft_strncmp
int ft_strncmp(const char *str1, const char *str2, size_t n);
문자열 str1과 str2을 n만큼 비교
매개변수
str1 : 비교할 문자열의 시작 주소
str2 : 비교할 문자열의 시작 주소
n : 비교할 데이터의 길이
반환값
*str1 > *str2 : 양수
*str1 < *str2 : 음수
*str1 = *str2 : 0
주의사항
128 이상의 아스키코드의 값도 계산하기 위해 unsigned char *로 형변환 하여 비교
ft_toupper
int ft_toupper(int c);
매개변수로 들어온 값이 소문자라면 대문자로 변환
매개변수
c : 아스키코드 값
반환값
c가 소문자(97 ~ 122)라면 대문자로 바꾸어서 리턴
아니면 본래의 c값 리턴
ft_tolower
int ft_tolower(int c);
매개변수로 들어온 값이 대문자라면 소문자로 변환
매개변수
c : 아스키코드 값
반환값
c가 대문자(65 ~ 90)라면 소문자로 바꾸어서 리턴
아니면 본래의 c값 리턴
ft_strchr
char *ft_strchr(const char *str, int c);
문자열 str내에 c값과 일치하는 문자가 있는지 검사
매개변수
str : 검사할 문자열
c : 찾고자 하는 문자의 아스키코드 값
반환값
찾은 문자가 있는 위치해 있는 주소값 리턴
찾지 못하면 NULL
주의사항
찾고자 하는 문자가 NULL일 수도 있음
ft_strrchr
char *ft_strrchr(const char *str, int c);
문자열 str내에 c값과 일치하는 문자가 있는지 뒤에서 부터 검사
매개변수
str : 검사할 문자열
c : 찾고자 하는 문자의 아스키코드 값
반환값
찾은 문자가 있는 위치해 있는 주소값 리턴
찾지 못하면 NULL
주의사항
찾고자 하는 문자가 NULL일 수도 있음
ft_memchr
void *ft_memchr(const void *src, int c, size_t n);
메모리 str내에 c값과 일치하는 문자가 있는지 n만큼 검사
매개변수
str : 검사할 메모리의 시작 주소
c : 찾고자 하는 문자의 아스키코드 값
n : 검색을 진행할 데이터의 길이
반환값
찾은 문자가 위치해 있는 주소값 리턴
찾지 못하면 NULL
ft_memcmp
int ft_memcmp(const void *str1, const void *str2, size_t n);
str1이 가리키는 값과 str2이 가리키는 값을 n만큼 비교
매개변수
str1 : 비교할 메모리의 시작 주소
str2 : 비교할 메모리의 시작 주소
n : 비교할 데이터의 길이
반환값
*str1 > *str2 : 양수
*str1 < *str2 : 음수
*str1 = *str2 : 0
주의사항
문자열 중 하나가 NULL값이 나오면 종료했던 strncmp와 달리 memcmp은 문자열이든 바이너리든 상관없이 지정된 길이만큼 비교
ft_strnstr
char *ft_strnstr(const char *haystack, const char *needle, size_t n);
문자열 haystack 안에서 문자열 needle이 있는지 n번 안에 검사
매개변수
haystack : 검사할 문자열의 시작 주소
needle : 찾을 문자열의 시작 주소
n : 비교할 데이터의 길이
반환값
찾은 문자열이 위치해 있는 주소값 리턴
못찾으면 NULL
주의사항
n번 만큼 haystack의 시작점을 이동하면서 검사 진행
ft_atoi
int ft_atoi(const char *str);
문자열 str을 정수로 변경
매개변수
str : 정수로 변경할 문자열의 시작 주소
반환값
변환된 정수 값 리턴
만일 변환할 수 없을 시 0 리턴
주의사항
whitespace 무시
NULL 값을 만날 시 종료
-, +는 한번씩 나올 수 있음
리턴값이 오버플로우일 경우 정의 X
atoi는 strtol을 통해 문자열을 정수로 바꿔준 후 int로 캐스팅만 하여 리턴함
이때 strtol의 반환값은 long이며, 이 과정에서 LONG_MAX 이상의 숫자와 LONG_MIN 이하의 숫자들이 고정이 됨
이 값을 int로 캐스팅하면 LONG_MAX는 -1, LONG_MIN은 0이 리턴됨
ft_calloc
void *ft_calloc(size_t n, size_t size);
n 하나당 size의 크기를 가지고 있는 메모리를 할당하여 0으로 초기화
매개변수
n : 할당할 메모리의 단위 개수
size : n 하나당 크기
반환값
할당된 메모리의 주소값
주의사항
할당된 메모리를 초기화 하지 않아 쓰레기 값이 들어있는 malloc과 달리 calloc은 할당된 메모리 공간을 모두 0으로 초기화
널 가드
ft_strdup
char *ft_strdup(const char *str);
문자열 str을 새롭게 할당된 문자열에 복사
매개변수
str : 복사할 문자열
반환값
복사된 문자열의 주소
주의사항
널 가드
'42 Seoul' 카테고리의 다른 글
[42 Seoul] Born2beroot - 프로젝트 개요 (0) | 2022.09.01 |
---|---|
[42 Seoul] ft_printf (0) | 2022.08.19 |
[42 Seoul] Libft - Bonus (0) | 2022.08.02 |
[42 Seoul] Libft - Part 2 (0) | 2022.08.02 |
[42 Seoul] Libft - 시작하기 전 (0) | 2022.08.02 |