您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么將字符串與功能宏進行綁定”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么將字符串與功能宏進行綁定”吧!
1 代碼原理說明
利用switch和case的散轉(zhuǎn)功能,宏作為散轉(zhuǎn)條件,每一個宏對應一種功能,將宏和字符串進行綁定,這樣通過比較字符串的方式,就能獲得對應宏的功能代碼。
此代碼的好處是宏代碼不用變的情況下,字符串和功能宏的對應是可以根據(jù)需要進行隨意調(diào)整的。
代碼結(jié)構(gòu)清晰,易于維護。
2 實現(xiàn)源碼
1)實現(xiàn)代碼
一切說明,盡在注釋中啦!代碼可以理解為等級評定吧,實際意義不大,大家多關(guān)注這個小代碼的結(jié)構(gòu)吧!
#include <stdio.h> #include <stdlib.h> // 功能宏散轉(zhuǎn)編號 #define ONE_STAR 1 #define TWO_STAR 2 #define THREE_STAR 3 #define FOUR_STAR 4 #define FIVE_STAR 5 #define ZERO 0 // 無效輸入返回值 /* 定義查找對應表結(jié)構(gòu)及查找表數(shù)組 */ static struct lookuptable { char *str; // 指向字符串 int code; // 對應宏功能碼 }tab[]= { // 字符串口與功能指示紅的對應表,可以根據(jù)需要隨意調(diào)整,下面的1-5可以換為任意字符串,只是輸入時(查找時)也要一一對應上 {"1", ONE_STAR}, {"2", TWO_STAR}, {"3", THREE_STAR}, {"4", FOUR_STAR}, {"5", FIVE_STAR} }; // 查找函數(shù)聲明 SearchFunc(char *s); int main(int argc, char *argv[]) { int score = 0; char str[10] = "\0"; printf("Please input number 1-5 to evaluate: "); gets(str); // 根據(jù)星級進行處理,這里就是簡單的賦值,實際應用中可以根據(jù)需要更多 switch(SearchFunc(str)) { case ONE_STAR: { score += 1; break; } case TWO_STAR: { score += 2; break; } case THREE_STAR: { score += 3; break; } case FOUR_STAR: { score += 4; break; } case FIVE_STAR: { score += 5; break; } case ZERO: // 無效的情況,打印無效提升 { printf("\nYour input is invaild!\n"); break; } } // 輸入有效才進行星級打印 if(SearchFunc(str)!=ZERO) { printf("\nThe score is: %d\n",score); } return 0; } /* 宏功能查找函數(shù) */ SearchFunc(char *s) { int i; for(i=0; i< sizeof(tab)/sizeof(tab[0]); i++) { if(strcmp(tab[i].str, s)==0) { return tab[i].code; } } return ZERO; // 輸入不再范圍內(nèi)標記為0 }
2)運行結(jié)果
① 輸入值在有效范圍1-5時,結(jié)果如下:
② 輸入值不在有效范圍內(nèi)時,結(jié)果如下:
到此,相信大家對“怎么將字符串與功能宏進行綁定”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。