strmapi 뭐예여
String Map Indexed
문자열의 각 문자에 대해, 인덱스를 같이 넘겨서 함수(f)를 적용하고, 결과를 새로운 문자열로 반환 하는 함수
원본 문자열은 건드리지 않고, 새로운 문자열을 만들어서 리턴함수 원형 char strmapi(char const s, char (*f)(unsigned int, char))
char const *s: 원본 문자열
char (*f)(unsigned int, char): 적용할 함수 포인터
만약에 적용할 함수 f = (index + 문자) -> "대문자로 만들기"라면
i s[i] result
0 'a' 'A'
1 'b' 'B'
...
이런식으로 작동하도록 구현하는 것이다.(f 함수 포인터가 대문자로 적용하는 함수라는 것은 아님.)
#include "libft.h"
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))
{
unsigned int i;
char *str;
i = 0;
if (!s || !f) //s와 f가 NULL일 경우 즉시 NULL 반환
return (NULL);
str = (char *)malloc(ft_strlen(s) + 1); // NULL 포인터 공간 고려
if (!str)
return (NULL); //메모리 할당 실패시 NULL 반환
while (s[i])
{
str[i] = f(i, s[i]); /함수 포인터를 문자열의 각 문자에 대해 적용.원본 문자열 수정X
i++;
}
str[i] = '\0'; //NULL 삽입
return (str);
}