复习C语言系列二:动态调用函数指针数组


a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun()

a
请输入给您指定的函数输调用的参数
afun_par
-----------------------------
now call_fun_ptr
-----------------------------
call afun:(afun_par)
-----------------------------
请按任意键继续. . .




a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun()
b
请输入给您指定的函数输调用的参数
bfun_par
-----------------------------
now call_fun_ptr
-----------------------------
call bfun:(bfun_par)
-----------------------------

请按任意键继续. . .

/*
    
*/
#include "common.h"

void call_fun_ptr(void(*fp)(char* str),char *str)
{
    puts("-----------------------------");
    printf("now %s 
",__FUNCTION__); 
    (*fp)(str);
}

void afun(char* str)
{
    puts("-----------------------------");
    printf("%s%s:(%s)
","call ",__FUNCTION__,str); 
    puts("-----------------------------");
}

void bfun(char* str)
{
    puts("-----------------------------");
    printf("%s%s:(%s)
","call ",__FUNCTION__,str); 
    puts("-----------------------------");
}

int main(int argc,char* argv[])
{
    char ch=' ';
    char str[81]={0};
	void ((*fun_ptr[2]))(char*)={afun,bfun};
    printf("a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun()%
"); 
    scanf("%c",&ch);
    printf("请输入给您指定的函数输调用的参数%s
",str); 
	scanf("%s",str);
    if('a'==ch)
        call_fun_ptr(*fun_ptr[0],str);
    else if('b'==ch)
        call_fun_ptr(*fun_ptr[1],str);
    else
        printf("输入字符无效
"); 

    system("pause");
    return 0;
}