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