ft_strmapi 구현

yeonjkim·2021년 5월 24일
0

42seoul-libft

목록 보기
28/43

1. ft_strmapi 용도

* 인자로 받은 문자열 s의 각 요소에 f함수를 적용한 값들로 새로운 하나의 문자열 만들고 문자열의 주소값을 반환하는 함수

* allowed function : malloc

2. ft_strmapi 프로토타입

char	*ft_strmapi(char const *s, char (*f)(unsigned int, char))
char const *s : f를 적용할 문자열 s
char (*f)(unsigned int, char) : s에 적용할 함수 포인터 f.
f는 인자로 unsigned intchar을 받음. f의 리턴형은 char *, 문자열.

3. 구현 시 유의사항

  • 일차원 배열을 먼저 할당하고 그 배열에 s의 요소들에 f함수를 적용한 것을 차례대로 넣는다.

  • 만든 문자열의 가장 끝에는 '\0'문자가 들어 있어야 한다.

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

4. 코드 구현

#include "libft.h"

char    *ft_strmapi(char const *s, char (*f)(unsigned int, char))
{
        unsigned int    len;
        char            *str;
        unsigned int    index;

        index = 0;
        str = NULL;
        len = (unsigned int)(ft_strlen(s));
        if (!(str = (char*)malloc(sizeof(char) * (len + 1))))
        {
                return (NULL);
        }
        while (index < len)
        {
                str[index] = f(index, s[index]);
                index++;
        }
        str[index] = '\0';
        return (str);
}

5. 코드 구현 방법

(1) 할당 할 사이즈을 알기 위해 s의 길이를 ft_strlen()을 통해 len에 저장한다.
(2) str에 len + 1('\0' 포함)만큼을 할당하고, 만약 할당에 실패하면 NULL을 반환한다.
(3) index가 0일 때부터, len까지 str[index]에 f(index, s[index])를 한 값을 넣는다.
(4) 마지막에 '\0'을 넣고 str을 반환한다.

0개의 댓글