原创 [转]通过结构体和函数指针进行菜单操作的一个实例[非常实用!]

2008-12-12 16:19 4413 9 10 分类: MCU/ 嵌入式
通过结构体和函数指针进行菜单操作的一个实例2007-12-17 13:03:00



前天帮同学写了一个菜单,感觉对不太了解函数指针的同学来说有点借鉴意义,原程序如下,可以直接放在vc++6.0环境下运行,移植到单片机上也是非常的简单的!

程序如下:

\\-------------------------------------------------------------------------

#i nclude<stdio.h>
void fun0(void){
 printf("\tYou are right!\n\tHere is fun0()!\n");
}
void fun1(void){
 printf("\tYou are right!\n\tHere is fun1()!\n");
}
void fun2(void){
 printf("\tYou are right!\n\tHere is fun2()!\n");
}
void fun3(void){
 printf("\tYou are right!\n\tHere is fun3()!\n");
}
void fun4(void){
 printf("\tYou are right!\n\tHere is fun4()!\n");
}
void fun5(void){
 printf("\tYou are right!\n\tHere is fun5()!\n");
}

struct {    //声明一个结构体
 void (*fun)(void); //声明一个函数指针
 char *tip;
}CmdTip[] = {   //结构体初始化
    { fun0, "fun0() test"},   
    { fun1, "fun1() test"},
    { fun2, "fun2() test"},
    { fun3, "fun3() test"},
    { fun4, "fun4() test"},
    { fun5, "fun5() test"},
    { 0, 0}      
   };

void main(void){
  int idx,i;
  while(1){   
   printf("\n\n\n\t=====================\n");
   printf("\t|        菜单       |\n");
   printf("\t---------------------\n");
   for(i=0; CmdTip.fun!=0; i++)
    printf("\t| %2d:  %s  |\n", i, CmdTip.tip);
   printf("\t=====================\n\n");
   printf("请输入一个菜单编号并按ENTER键:");
   scanf("%d",&idx);  
   if(idx<i)
   {
    (*CmdTip[idx].fun)();
   }
   else printf("\t你输入了一个错误的数字:%d;请重新输入!\n", idx);
  }
}
\\-------------------------------------------------------------------------

点击看大图
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-12-15 10:50

不错
相关推荐阅读
用户101928 2009-03-27 17:42
[转]C/C++ 误区一:void main()
 很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上...
用户101928 2009-03-20 17:46
void far 是什么东东
Far Seer 先知在远古的dos时代,其内存寻址方式是基于段的,每一段大小64k=2^16b=65536b.具体的寻址方式是段地址+偏移值,段地址固定在寄存器中,所以在一个段中只需一个16字节的数...
用户101928 2009-03-13 14:04
[转]关于旁路电容的深度对话(神级)
关于旁路电容的深度对话,感觉神级的一些讨论,读很收获很大原文地址:http://bbs.ednchina.com/adi/showtopic.aspx?id=102351...
用户101928 2009-03-02 10:01
下载优酷、Youteb、56等视频网站的视频
打开http://clipnabber.com/ 便知,O(∩_∩)O~本人实测,超简单 ...
用户101928 2009-02-25 09:54
软非屏蔽中断
...
用户101928 2009-02-22 12:31
[转]笑死我了!PS牛人~
中国网民太狠了!轻易不要上网求...... 某网民:求PS牛人,帮我把后面的两个*人P掉!!! 于是各路大虾各显神通,学雷锋做好事开始鸟 这还不简单?!CUT掉就得啦!(点评:技术含量太低)(点评:非...
EE直播间
更多
我要评论
1
9
关闭 站长推荐上一条 /3 下一条