c语言case后面多字符,多SWITCH-CASE结构时的C语言对象方式化解
原有代碼:
#include
int main()
{
int n=0;
while(1)
{
scanf("%d",&n);
switch(n)
{
case 0:
printf("STATE0\n");
break;
case 1:
printf("STATE1\n");
break;
case 2:
printf("STATE2\n");
break;
default:
return 0;
}
}
return 0;
}
改造方案:
#include
#define N 3 //狀態值
struct State
{
int i;
void (*CreateState)(struct State *s);
void (*Show)(struct State s);
void (*StateTrans[N])(struct State s);
};
void StateTrans0(struct State s)
{
s.i=0;
s.Show(s);
}
void StateTrans1(struct State s)
{
s.i=1;
s.Show(s);
}
void StateTrans2(struct State s)
{
s.i=2;
s.Show(s);
}
void Show(struct State s)
{
printf("State-%d\n",s.i);
}
void CreateState(struct State *s)
{
s->Show=Show;
s->StateTrans[0]=StateTrans0;
s->StateTrans[1]=StateTrans1;
s->StateTrans[2]=StateTrans2;
}
enum{ST0=0,ST1,ST2}STATE;//枚舉狀態
int main()
{
State s;//實例化
//初始化
s.CreateState=CreateState;
s.CreateState(&s);
//模擬狀態調用
while(1)
{
scanf("%d",&STATE);
if(STATE<0||STATE>2)
{
break;
}
s.StateTrans[STATE](s);
}
getchar();
return 0;
}
總結
以上是生活随笔為你收集整理的c语言case后面多字符,多SWITCH-CASE结构时的C语言对象方式化解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下usb设备节点名不固定,解决
- 下一篇: C语言函数最多有有多少个参数,C中子函数