[ft_strmapi] note

duckkuri·2020년 10월 15일
0

42Seoul_Libft_Story

목록 보기
7/22

[function] ft_strmapi

문자열의 각 문자들을 함수를 돌리고 남은 문자

type

char *ft_strmapi(char const *s, char (*f)(unsigned int, char));

매개변수

  • char const *s : 반복할 문자열
  • char (f)(unsigned int, char) : 각각의 문자에 적용할 함수기능
    char (f)(unsigned int, char)는 함수형 포인터이다.

리턴값

char * 형 데이터로 리턴
  • f에 의해서 연속적으로 적용되어 문자열을 생성한다.
  • 할당 실패할 경우 NULL을 리턴.

사용 가능한 외부 함수

malloc

설명

  • 함수 f에의해 각 문자에 적용한다.
  • 문자열 sf를 적용하여 새로운 문자열을 생성한다(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를 주도록 함수를 만들었다.


Note

함수형 포인터

int (*FuncPtr) (int int)
  • *FuncPtr : 함수형 포인터이고, 변수명은 FuncPtr
  • int : 리턴형
  • (int int) : 인자값 type과 갯수

함수형 포인터 예제

#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

profile
😤 Today I Learned

0개의 댓글