문자열 s의 start번째 자리부터 len만큼을 잘라서 반환해주는 함수
char *ft_substr(char const *s, unsigned int start, size_t len)
🔩 parameters
*s : 자를 원본 문자열
start : 문자열을 자르기 시작할 위치
len : 문자열을 잘라낼 크기📬 return
char *형 반환
- start가 s의 길이보다 크다면 \0이 들어간 저장공간을 반환
- 문자열을 잘라냈다면 끝에 \0을 넣고 해당 문자열을 반환, 단 malloc으로 저장공간을 할당해주어야함
- ft_strcheck함수는 문자열 s의 길이보다 start의 값이 더 크다면 \0값이 들어있는 저장공간을 할당한 뒤 반환해줌
- lencheck함수는 잘라서 완성할 문자열의 길이를 확인하는 함수로 s의길이에서 start만큼의 길이를 빼줬을 때 len의 길이가 더 길다면 s - start를 리턴해주고 len이 더 짧다면 len을 리턴해준다
- 자른 문자열은 malloc으로 저장공간을 할당해서 리턴해주어야하고 문자열의 끝에는 \0이 들어가야한다
- malloc할당실패시 NULL을 반환하여 함수를 끝내주어야함
#include "libft.h"
char *ft_startcheck(void)
{
char *rtv;
rtv = malloc(sizeof(char));
if (rtv == 0)
return (NULL);
rtv[0] = '\0';
return (rtv);
}
int lencheck(char const *s, unsigned int start, size_t len)
{
if ((ft_strlen(s) - start) < len)
return ((ft_strlen(s) - start));
else
return (len);
}
char *ft_substr(char const *s, unsigned int start, size_t len)
{
size_t i;
size_t j;
char *sub;
i = 0;
j = 0;
if (ft_strlen(s) < start)
return (ft_startcheck());
sub = (char *)malloc(sizeof(char) * (lencheck(s, start, len) + 1));
if (sub == 0)
return (NULL);
while (s[i])
{
if (i >= start && j < len)
{
sub[j] = s[i];
j++;
}
i++;
}
sub[j] = '\0';
return (sub);
}