1.ft_strmapi란?
문자열 s의 각 요소에 함수f를 적용한 값으로 새로운 문자열을 만드는 함수이다.
새롭게 만든 문자열의 주소를 리턴한다.
2. 함수 프로토타입
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))
3. 함수구현
#include "libft.h"
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))
{
unsigned int len;
unsigned int index;
char *result;
index = 0;
result = 0;
len = (unsigned int)(ft_strlen(s));
result = (char *)malloc((len + 1) * sizeof(char));
if (!result)
return (0);
while (index < len)
{
result[index] = f(index, s[index]);
index++;
}
result[index] = '\0';
return (result);
}
사용예시
char f(unsigned int i, char c)
{
if (i % 2 == 1 && c >= 'a' && c <= 'z')
return (c - ('a' - 'A'));
return (c);
}
int main(void)
{
char *s = "hello42";
char *new_s;
new_s = ft_strmapi(s, f);
if (!new_s)
{
printf("Memory allocation failed.\n");
return (1);
}
printf("Original: %s\n", s);
printf("Modified: %s\n", new_s);
free(new_s);
return (0);
}