728x90
[이전 글]
[다음 글]
Part1 : Libc functions
아래의 함수들을 다시 구현하세요. 이 함수들은 외부 함수를 필요로 하지 않습니다 :
- isalpha, isdigit, isalnum, isascii, isprint
- bzero, memset, memcpy, memmove, memchr, memcmp
- strlen, strnstr, strlcpy, strlcat, strchr, strrchr, strncmp
- toupper, tolower, atoi
다음의 함수들은 외부 함수 malloc을 사용하여 구현하세요 :
- calloc, strdup
ft_calloc
void *ft_calloc(size_t count, size_t size)
{
void *ptr;
size_t len;
len = count * size;
ptr = malloc(len);
if (!ptr)
return (0);
ft_memset(ptr, 0, len);
return (ptr);
}
- size * count 크기의 메모리 공간을 확보 후 0으로 초기화하는 함수이다.
- malloc과 달리 calloc은 할당된 공간의 값을 모두 0으로 초기화한다는 차이가 있다.
- 배열을 할당하고 모두 0으로 초기화할 필요가 있는경우 calloc을 쓰면 편하다.
2022/04/11 테스트 케이스 추가로 소스를 수정했다.
void *ft_calloc(size_t count, size_t size)
{
void *ptr;
size_t len;
len = count * size;
if (count > 0 && size > 0 && size != (len / count))
return (0);
ptr = malloc(len);
if (!ptr)
return (0);
ft_memset(ptr, 0, len);
return (ptr);
}
ft_strdup
char *ft_strdup(const char *s1)
{
size_t i;
size_t len;
char *str;
len = ft_strlen(s1);
str = (char *)malloc(sizeof(char) * (len + 1));
if (!str)
return (NULL);
i = 0;
while (s1[i])
{
str[i] = s1[i];
i++;
}
str[i] = 0;
return (str);
}
- 문자 s1을 복사하고 복사된 문자열을 가리키는 포인터를 반환하는 함수이다.
728x90
반응형
'42 SEOUL > 0_Libft' 카테고리의 다른 글
[42Seolu/Libft] Tester (0) | 2022.04.17 |
---|---|
[Libft] Bonus part (0) | 2022.03.28 |
[Libft] Part2 : Additional functions (0) | 2022.03.28 |
[Libft] Part1 : strlen, strnstr, strlcpy, strlcat, strchr, strrchr, strncmp (0) | 2022.03.26 |
[Libft] Part1 : toupper, tolower, atoi (0) | 2022.03.26 |
댓글