地雷是怎么引爆的:函数指针高手???

来源:百度文库 编辑:高考问答 时间:2024/05/12 18:14:32
char code[]="+-*/";
int add(int a,int b){return a+b;}
int sub(int a,int b){return a-b;}
int mul(int a,int b){return a*b;}
int div(int a,int b){return a/b;}
char *func[4]={"add","sub","mul","div"} ;
int findcode(char c)
{
int i=0;
while©{
if(c==code[i]) return i;
else i++;
}
}
char *f(char c)
{
int a;
a=findcode©;
return func[a];
}
main()
{
int x;
int y;
int (*p)(int,int);
char c;

scanf("%d",&x);
scanf("%d",&y);
c=getch();
p=f©;
printf("%d",(*p)(x,y));
getch();

}
结果总是出不来??为什么??
望高手指教
该问题已经解决,不过仍要感谢大家!!

p=f不对呀,p是指向一个有形如int fun(int,int)这样函数的指针,而f是char *f(char)这样的,类型不匹配。
用p=&add,p=&sub...都是可以的
你的意思应该是输入两个数,然后输入操作符,最后算出结果吧?我觉得不用数组func和函数f,直接在main中用case语句会好一点。
还有一点bug是
scanf("%d",&x);
scanf("%d",&y);后面应该加一句getch();然后再
c=getch(),不然c老是会接收到回车。

这么复杂, 怎么不用枚举或case做啊,