728x90

1. 함수 포인터와 switch 문 사용

#include <stdio.h>
#include <string.h>

// 함수 정의
void functionA() { printf("Function A\n"); }
void functionB() { printf("Function B\n"); }
void functionC() { printf("Function C\n"); }

enum FunctionName { A, B, C, UNKNOWN };

// 함수 이름을 열거형 값으로 변환
enum FunctionName getFunctionName(const char *name) {
    if (strcmp(name, "A") == 0) return A;
    if (strcmp(name, "B") == 0) return B;
    if (strcmp(name, "C") == 0) return C;
    return UNKNOWN;
}

int main() {
    char input[50];
    printf("Enter function name: ");
    scanf("%s", input);

    switch (getFunctionName(input)) {
        case A: functionA(); break;
        case B: functionB(); break;
        case C: functionC(); break;
        default: printf("Unknown function\n");
    }

    return 0;
}

 

 

2. 조건문과 함수 매핑

#include <stdio.h>
#include <string.h>

// 함수 정의
void functionA() { printf("Function A\n"); }
void functionB() { printf("Function B\n"); }

int main() {
    char funcName[50];
    printf("Enter the function name: ");
    scanf("%s", funcName);

    if (strcmp(funcName, "functionA") == 0) {
        functionA();
    } else if (strcmp(funcName, "functionB") == 0) {
        functionB();
    } else {
        printf("Function not found.\n");
    }

    return 0;
}

 

 

3. 함수 포인터와 배열 사용

#include <stdio.h>
#include <stdlib.h>

// 함수 정의
void functionA() { printf("Function A\n"); }
void functionB() { printf("Function B\n"); }
void functionC() { printf("Function C\n"); }

// 함수 포인터 배열
void (*functions[3])() = {functionA, functionB, functionC};

int main() {
    int choice;
    printf("Enter the function index (0-2): ");
    scanf("%d", &choice);

    if (choice >= 0 && choice < 3) {
        (*functions[choice])();
    } else {
        printf("Invalid index.\n");
    }

    return 0;
}

 

 

4. 명령 패턴 사용

#include <stdio.h>
#include <string.h>

typedef struct Command {
    void (*execute)();
} Command;

void functionA() { printf("Function A\n"); }
void functionB() { printf("Function B\n"); }

Command createCommand(void (*func)()) {
    Command cmd;
    cmd.execute = func;
    return cmd;
}

int main() {
    char funcName[50];
    printf("Enter the command name (A/B): ");
    scanf("%s", funcName);

    Command cmd;
    if (strcmp(funcName, "A") == 0) {
        cmd = createCommand(functionA);
    } else if (strcmp(funcName, "B") == 0) {
        cmd = createCommand(functionB);
    } else {
        printf("Invalid command.\n");
        return 1;
    }

    cmd.execute();
    return 0;
}
728x90

'C, C++' 카테고리의 다른 글

메타 프로그래밍  (0) 2024.02.15
함수 호출 방법들  (0) 2023.12.24

+ Recent posts