저번 글에 이어, 이번 글에서는 Part2 Additional functions를 다룬다.
char *ft_substr(char const *s, unsigned int start, size_t len);
s 문자열에서 start 인덱스부터 시작하는 len 길이만큼의 문자열을(널 문자 미포함) len+1 길이만큼의 새로운 메모리를 할당하여 복사해 반환하는 함수이다.
주의할 점은, s 문자열에 start 인덱스가 존재하지 않거나 (start > strlen(s))
문자열의 start 인덱스에 있는 문자가 널 문자인 경우 (start = ft_strlen(s))
에는 널 문자 하나만 들어 있는 문자열을 새로 할당해 반환해 주어야 한다는 점!
char *ft_strjoin(char const *s1, char const *s2);
메모리를 동적으로 할당한 문자열에 s1 문자열과 s2 문자열을 이어붙인 문자열을 복사하여 반환하는 함수이다.
char *ft_strtrim(char const *s1, char const *set);
set 문자열에 포함된 문자들을 s1 문자열의 앞과 뒤에서 제거한 후, 그 문자열을 동적 할당한 문자열에 복사하여 반환하는 함수.
문자열의 중간에서는 set 문자열에 포함된 문자들을 제거해서는 안된다는 점을 주의해야 한다.
char **ft_split(char const *s, char c);
c 문자를 기준으로 s 문자열을 잘라, 잘린 문자열들을 동적으로 할당한 이차원 배열에 다시 동적으로 메모리를 할당해 차례대로 복사하여 반환해 주는 함수이다.
예를 들어 ft_split("hello-world-hihi", '-')
와 같이 함수가 호출되었다면
return[i] | 문자열 |
---|---|
return[0] | hello |
return[1] | world |
return[2] | hihi |
반환값 배열의 요소는 다음과 같다.
char *ft_itoa(int n);
atoi 함수와는 반대로, 정수를 문자열로 변환해주는 함수이다.
필요한 문자열의 길이만큼 메모리를 동적 할당해 문자를 하나씩 채운 후 반환해주면 된다.
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
문자열 s와 길이가 같은 문자열을 동적 할당한 후, s의 각 인덱스마다(각 문자마다) 함수 f를 적용한 값을 동적 할당한 문자열에 넣어 반환하는 함수이다.
마지막에 널 문자를 넣는 걸 잊지 말자!
void ft_putchar_fd(char c, int fd);
파일 디스크립터가 가리키는 파일 또는 표준 입출력 스트림에 c 문자를 쓰거나 출력하는 함수.
void ft_putstr_fd(char *s, int fd);
ft_putchar_fd 함수와 같고, 쓰거나 출력하는 값이 문자열이라는 점만 다르다.
void ft_putendl_fd(char *s, int fd);
ft_putstr_fd와 같고, 마지막에 개행 문자를 출력해준다는 점만 다르다.
void ft_putnbr_fd(int n, int fd);
파일 디스크립터가 가리키는 파일 또는 표준 입출력 스트림에 주어진 정수를 쓰거나 출력하는 함수.
정수를 문자열 또는 문자처럼 다루어야 해서 조금 까다로웠다. 재귀를 활용해 풀었다 😊