strmapi

유제민·2025년 4월 11일

42경산

목록 보기
13/17

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);
}
profile
무진장 게으른

0개의 댓글