📌ft_itoa
정수를 문자열로 변환
char *ft_itoa(int n);
➕ 매개변수 (Parameters)
n
: 문자열로 변환할 정수
➕ 반환값 (Return)
char *
: 변환된 문자열 주소 반환
➕ 설명 (Description)
- 저는 처음에 이 함수를 재귀를 사용해서 코드를 짰더니 무리넷 검사에서 memleak 이 발생하였습니다. (그래서 배열을 이용하여 푸는 방법으로 수정하였습니다!)
➕ 코드 (Code)
#include "libft.h"
static char *ft_handle_zero(void)
{
char *ptr;
if (!(ptr = (char *)ft_calloc(2, sizeof(char))))
return (NULL);
ptr[0] = '0';
return (ptr);
}
char *ft_itoa(int n)
{
char *ptr;
char buf[20];
int tmp;
int len;
if (n == 0)
return (ft_handle_zero());
tmp = n;
len = 0;
while (tmp)
{
buf[len] = (tmp % 10 > 0) ? (tmp % 10) + '0' : -(tmp % 10) + '0';
tmp /= 10;
len++;
}
if (n < 0)
len++;
if (!(ptr = (char *)ft_calloc(len + 1, sizeof(char))))
return (NULL);
tmp = (n < 0) ? 0 : -1;
ptr[0] = (n < 0) ? '-' : ptr[0];
while ((++tmp) < len)
ptr[tmp] = buf[len - 1 - tmp];
return (ptr);
}
📌ft_strmapi
str의 각 문자들을 f함수에 저장시켜 새로운 문자열 만들어 반환하기
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
➕ 매개변수 (Parameters)
s
: 원본 문자열f
: 적용시킬 함수
➕ 반환값 (Return)
char *
: f 함수를 통해 변환된 문자열 반환
➕ 설명 (Description)
➕ 코드 (Code)
#include "libft.h"
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))
{
char *temp;
int i;
i = 0;
if (!s || !f)
return (0);
if (!(temp = malloc(ft_strlen(s) + 1)))
return (0);
while (s[i])
{
temp[i] = f(i, s[i]);
i++;
}
temp[i] = '\0';
return (temp);
}
반응형
'➰ 코딩 부트캠프 > 42 seoul' 카테고리의 다른 글
[0 Circle] Libft - ft_lstnew, ft_lstadd_front (0) | 2021.01.04 |
---|---|
[0 Circle] Libft - ft_putchar_fd, ft_putstr_fd, ft_putendl_fd, ft_putnbr_fd (0) | 2021.01.04 |
[0 Circle] Libft - ft_strtrim, ft_split (0) | 2021.01.04 |
[0 Circle] Libft - ft_substr, ft_strjoin (0) | 2021.01.04 |
[0 Circle] Libft - ft_calloc, ft_strdup (0) | 2021.01.04 |