ft_substr 구현

yeonjkim·2021년 5월 25일
0

42seoul-libft

목록 보기
33/43

1. ft_substr 용도

* ft_substr은 파라미터로 문자열 s와 unsigned int start, size_t len을 갖는다.

* 문자열을 자를 때 이용하며, 문자열 s의 start번째부터 len길이만큼 문자열을 자르는 함수이다.

2. ft_substr 프로토타입

char	*ft_substr(char const *s, unsigned int start, size_t len)
char const *s : 자를 대상이 되는 문자열
unsigned int start : s의 어디부터 자를 것인지 기준이 되는 정수
size_t len : s를 얼만큼 자를 것인지 기준이 되는 정수

3. 구현 시 유의사항

  • start가 unsigned int 이므로, start와 값을 비교하는 변수는 unsigned int여야 한다.

  • 자른 문자열은 malloc으로 할당되어야 하며, 자른 문자열의 가장 끝에는 '\0'이 존재해야 한다.

  • 할당 실패 시 NULL을 반환한다.

4. 코드 구현

#include "libft.h"

char    *ft_substr(char const *s, unsigned int start, size_t len)
{
        char                    *str;
        unsigned int    strindex;
        unsigned int    sindex;

        sindex = 0;
        strindex = 0;
        if (!(str = (char*)malloc(sizeof(char) * (len + 1))))
        {
                return (NULL);
        }
        while (s[sindex] != '\0')
        {
                if (sindex >= start && strindex < len)
                {
                        str[strindex++] = s[sindex];
                }
                sindex++;
        }
        str[strindex] = '\0';
        return (str);
}

5. 코드 구현 방법

(1) 반환할 자른 문자열 str과 str의 index를 담당할 strindex, s의 index를 담당할 sindex 선언
(2) len + 1('\0' 포함)만큼 할당 실패 시 NULL 반환
(3) sindex가 start보다는 크고, strindex가 len보다 작을 때까지 str에 s를 넣기
(4) str의 마지막에 '\0'넣고 리턴

0개의 댓글