문자열의 각 문자들을 함수를 돌리고 남은 문자
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
char * 형 데이터로 리턴
f
에 의해서 연속적으로 적용되어 문자열을 생성한다.malloc
f
에의해 각 문자에 적용한다.s
는 f
를 적용하여 새로운 문자열을 생성한다(malloc 사용)테스트
char oddcheck(unsigned int i, char c)
{
char x;
x = 'x';
if(i % 2 == 1)
return(c);
else
return(x);
};
char str1[] = "abcdefghijklmnopqrstuvyxyz";
char *str2;
str2 = ft_strmapi(str1, *oddcheck);
printf("str2 : %s\n",str2); // str2 : xbxdxfxhxjxlxnxpxrxtxvxxxz
추가설명 :
ft_strmapi 함수에 unsigned int로 어떤걸 넘겨줄지 문제에 명시되어있지 않지만,
index를 넘겨주는경우 실제 함수 이용시 편리하다는 다른 카뎃분의 설명을 듣고 해당 character의 index를 주도록 함수를 만들었다.
int (*FuncPtr) (int int)
FuncPtr
함수형 포인터 예제
#include <stdio.h>
int add(int a, int b) // int형 반환값, int형 매개변수 두 개
{
return a + b;
}
void executer(int (*fp)(int, int)) // 함수 포인터를 매개변수로 지정
{
printf("%d\n", fp(10, 20)); // 30: 매개변수로 함수 호출
}
int main()
{
executer(add); // executer를 호출할 때 add 함수의 메모리 주소를 전달
return 0;
}
출처
함수형 포인터
https://norux.me/8
함수형 포인터 예시
https://dojang.io/mod/page/view.php?id=599