일부 주의사항
- ft_strjoin의 경우 다음 예외처리가 필요하다.
- 이는 s1이 빈 첫 번째 케이스를 염두해 둔 것.
c
if (!s1 && !s2)
return (NULL);
else if (!s1)
return (ft_strdup((char *)s2));
else if (!s2)
return (ft_strdup((char *)s1));
코드
c
#include "get_next_line.h"
static size_t ft_strlen(const char *str)
{
size_t count;
if (str == 0)
return (0);
count = 0;
while (*str != '\0')
{
count++;
str++;
}
return (count);
}
char *ft_strchr(const char *s, int c)
{
size_t i;
size_t len;
len = ft_strlen(s);
i = 0;
while (i < len + 1)
{
if (*(s + i) == (char) c)
return ((char *)(s + i));
i++;
}
return (NULL);
}
char *ft_strdup(char *src)
{
char *arr;
int size;
int i;
i = 0;
size = ft_strlen(src);
arr = (char *)malloc(sizeof(char) * (size + 1));
if (!arr)
return (NULL);
i = 0;
while (src[i] != '\0')
{
arr[i] = src[i];
i++;
}
arr[i] = '\0';
return (arr);
}
char *ft_strjoin(char const *s1, char const *s2)
{
char *joined;
int size;
int i;
i = 0;
if (!s1 && !s2)
return (NULL);
else if (!s1)
return (ft_strdup((char *)s2));
else if (!s2)
return (ft_strdup((char *)s1));
size = ft_strlen(s1) + ft_strlen(s2) + 1;
joined = (char *)malloc(size * sizeof(char));
if (!joined)
return (0);
while (i < size && *s1 != '\0')
joined[i++] = *(s1++);
while (i < size && *s2 != '\0')
joined[i++] = *(s2++);
joined[i] = '\0';
return (joined);
}