久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 無意中看到的一段代碼 [打印本頁]

作者: liuyang    時間: 2012-1-3 23:20
標題: 無意中看到的一段代碼
void CmdRunning()

2   {

3       int iCmdNum = 0;               

4       void (*pCmd)() = NULL;

5          

6       do{

7             pCmd = NULL;

8             printf("請選擇:0. 退出;1. 新建文件;2. 打開文件;3. 保存文件\n");

9             iCmdNum = getchar();

10            fflush(stdin);

11            switch(iCmdNum){

12              case '0':

13                        printf("謝謝使用,再見!\n");

14                        break;

15              case '1':

16                       pCmd = CreateFile;

17                       break;

18              case '2':

19                       pCmd = OpenFile;

20                       break;

21              case '3':

22                       pCmd = SaveFile;

23                       break;

24              default:

25                       printf("對不起,你選擇的數字不存在,請重新選擇!\n");

26              }

27              if (NULL != pCmd){

28                 pCmd();                                          // 與“(*pCmd)();”等價

29              }

30        }while('0' != iCmdNum);

31    }

這種方式代碼雖然簡潔,但是這種形式的擴展性很差。

 

struct myNode
{
    char cmdNum;            //編號 
    void (*pCmdFun)(void);    //存儲函數地址用的函數指針 
};


//此處省略 ExitAll、CreatFile、OpenFile、Savefile函數實體的內容。 


//下面是“字典” 
struct myNode Cmd[]=
{
    {'0' , ExitAll    },    //這是一條記錄,內容為:編號 函數首地址。 
    {'1' , CreatFile},    //這是一條記錄,內容為:編號 函數首地址。 
    {'2' , OpenFile    },
    {'3' , SaveFile    }
    //以后如果要增加新的功能,只需在此增加一條“記錄”即可,格式同上。(擴展性非常高!)
};


const int Length_Of_Cmd = sizeof(Cmd)/sizeof(Cmd[1]);//自動測量結構體數組的大小(字典有多少條記錄) 




void cmdRuning()
{
    char cmdNum_input;
    int n=0;
    
    printf("請選擇:0. 退出;1. 新建文件;2. 打開文件;3. 保存文件\n");
    cmdNum_input = getchar();
    fflush(stdin);


     n = (cmdNum_input - '0');
       if( n>0 && n<(sizeof(Cmd) / sizeof(Cmd[0]) ) )//數據邊界檢查
        {// 直接映射到回調函數
            Cmd[n].pCmdFun();//本句執行字典中跟輸入的選項對應的函數
        }
}





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲先锋影音 | 青草福利 | 国产在线视频一区二区 | 成人av电影免费在线观看 | 成人免费在线观看 | 久久久久久亚洲精品 | 亚洲午夜精品一区二区三区他趣 | 精品日韩一区 | 久久九九网站 | 五十女人一级毛片 | 2019天天干夜夜操 | 少妇一区在线观看 | 午夜免费网 | 成人妇女免费播放久久久 | 欧美成年人 | 国产精品欧美一区二区三区不卡 | caoporn免费| 久久久久久久一区 | 欧美国产视频一区二区 | 欧美精品一区二区三区在线 | 在线激情视频 | 国产日韩精品视频 | 国产精品不卡视频 | 天堂在线网 | 欧美精品成人影院 | 在线日韩精品视频 | 成人在线免费电影 | 嫩草视频在线免费观看 | 国产精品久久久久久久久久 | 成年人在线观看视频 | 青青草华人在线视频 | 亚洲欧美视频 | 伊人伊成久久人综合网站 | 亚洲精品4 | 成人综合视频在线观看 | 精品久久久久久久久久久 | 精品一区二区三区四区 | 最新中文字幕第一页视频 | 最新中文字幕第一页视频 | 免费成人高清在线视频 | 亚洲精品一 |