多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 進行命令處理的典型程序框架

進行命令處理的典型程序框架

來源:程序員人生   發布時間:2014-10-08 08:00:00 閱讀次數:3014次
進行命令處理的典型程序框架

     今天翻看APUE中非局部goto的時候,看到了這個處理命令行的代碼框架,所以就想簡單的實現一個功能進行調試,花了大概2個小時,才完全看的過去,記錄下,雖然看起來還是不夠層次清晰。里面牽扯到的知識點注意有:業務要學會分層;枚舉值和對應字符串的轉換;字符串的解析(分詞)。

#include "util.h" void do_line(char *); #define FOREACH_CMD(CMD) CMD(CMD_UNSPEC) CMD(CMD_ADD) CMD(CMD_SUB) CMD(CMD_MULTI) CMD(CMD_LIMIT) #define GENERATE_ENUM(ENUM) ENUM, #define GENERATE_STRING(STRING) #STRING, enum CMD_ENUM { FOREACH_CMD(GENERATE_ENUM) }; static const char *CMD_STRING[] = { FOREACH_CMD(GENERATE_STRING) }; int main(void){ char line[MAXLINE]; //printf("%s ", CMD_STRING[CMD_ADD]); if (fgets(line, MAXLINE, stdin) != NULL) do_line(line); exit(0); } void do_line(char *ptr) /* process one line of input */ { int cmd, i; int count , result = 0; char **words = tokenize(ptr, &count); if(count < 2){ //至少有一個加數,這里假設輸入時合法的 } // C 語言不能用字符串做索引,所以需要找到字符串命令對應的枚舉值 for(i = 0; i < CMD_LIMIT; i++) if(strcmp(words[0], CMD_STRING[i]) == 0) break; switch(i){ case CMD_ADD: // cmd_add 應該單獨分離出一個函數 for(i = 1; i < count ; i++){ result += atoi(words[i]); } printf("ADD Result is %d ", result); break; default: printf("Invalid "); break; } //printf("CMD is %d ", i); //printf("words count : %d ", count); //最后統一釋放內存 for(i = 0; i < count ; i++) free(words[i]); free(words); // }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 中文字幕播放 | 成年人天堂 | 黄色网址在线免费 | 在线免费观看一级毛片 | 亚洲欧美一区二区三区综合 | 久久久久久久综合日本亚洲 | 无遮挡很爽很污很黄很色的网站 | 性欧美另类老妇高清 | 久久久亚洲天堂 | 成人一级大片 | 国产免费高清视频在线观看不卡 | 亚洲另类图片专区 | 爱爱视频免费网址 | 国产欧美精品一区二区三区 | 最新国产在线观看福利91 | 亚洲啊v| 欧美极品另类 | 亚洲最新永久观看在线 | 在线观看中文 | 成人亚洲在线观看 | 亚洲精品自拍区在线观看 | 免费不卡毛片 | 日日摸人人拍人人澡 | 欧美一级欧美一级在线播放 | 另类 校园 春色 都市 亚洲 | 爱爱毛片| 亚洲日本中文 | 视频一区视频二区在线观看 | 亚洲色大成网站www久久九九 | 爽一爽色视频 | 日韩色网站 | 一区二区三区视频在线观看 | 亚洲色图第1页 | 久久久国产精品免费 | 日韩大片免费看 | 伊人免费在线 | 看v片| 国产成人免费在线视频 | 最近免费中文字幕大全免费 | 日本免费人做人一区在线观看 | 中文字幕成人免费高清在线 |