日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
編程意識(shí)——將字符串與功能宏進(jìn)行綁定

編 者 悟 語

黎川網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

對(duì)于事的打算,永遠(yuǎn)都不要認(rèn)為別人考慮的過多,經(jīng)事的你可能才會(huì)發(fā)現(xiàn),不是別人想得太多,而是你想得太少。(思考是一種習(xí)慣,而不是一種負(fù)擔(dān))

文 章 導(dǎo) 讀

今天給小伙伴們帶來一段簡(jiǎn)短的代碼,簡(jiǎn)短但精致,將字符串與功能宏進(jìn)行綁定,這樣做的好處是調(diào)整代碼比較方便,掌握后你就會(huì)明白什么才是結(jié)構(gòu)清晰,閱讀過程中如果有什么問題,可以后臺(tái)留言哈。

1 代碼原理說明

利用switch和case的散轉(zhuǎn)功能,宏作為散轉(zhuǎn)條件,每一個(gè)宏對(duì)應(yīng)一種功能,將宏和字符串進(jìn)行綁定,這樣通過比較字符串的方式,就能獲得對(duì)應(yīng)宏的功能代碼。

此代碼的好處是宏代碼不用變的情況下,字符串和功能宏的對(duì)應(yīng)是可以根據(jù)需要進(jìn)行隨意調(diào)整的。

代碼結(jié)構(gòu)清晰,易于維護(hù)。

2 實(shí)現(xiàn)源碼

1)實(shí)現(xiàn)代碼

一切說明,盡在注釋中啦!代碼可以理解為等級(jí)評(píng)定吧,實(shí)際意義不大,大家多關(guān)注這個(gè)小代碼的結(jié)構(gòu)吧!

 
 
 
 
  1. #include  
  2. #include  
  3.  
  4. // 功能宏散轉(zhuǎn)編號(hào)  
  5. #define ONE_STAR    1 
  6. #define TWO_STAR    2 
  7. #define THREE_STAR  3 
  8. #define FOUR_STAR   4 
  9. #define FIVE_STAR   5 
  10.  
  11. #define ZERO        0    // 無效輸入返回值  
  12.  
  13.  
  14. /* 定義查找對(duì)應(yīng)表結(jié)構(gòu)及查找表數(shù)組 */ 
  15. static struct lookuptable  
  16.      char *str;   // 指向字符串  
  17.      int code;    // 對(duì)應(yīng)宏功能碼  
  18. }tab[]= {      
  19.      // 字符串口與功能指示紅的對(duì)應(yīng)表,可以根據(jù)需要隨意調(diào)整,下面的1-5可以換為任意字符串,只是輸入時(shí)(查找時(shí))也要一一對(duì)應(yīng)上  
  20.      {"1", ONE_STAR},  
  21.      {"2", TWO_STAR}, 
  22.      {"3", THREE_STAR}, 
  23.      {"4", FOUR_STAR}, 
  24.      {"5", FIVE_STAR} 
  25. };  
  26.  
  27. // 查找函數(shù)聲明 
  28. SearchFunc(char *s); 
  29.  
  30.  
  31. int main(int argc, char *argv[])  
  32.   
  33.       int score = 0; 
  34.       char str[10] = "\0";  
  35.   
  36.   
  37.       printf("Please input number 1-5 to evaluate: "); 
  38.   
  39.       gets(str); 
  40.   
  41.       // 根據(jù)星級(jí)進(jìn)行處理,這里就是簡(jiǎn)單的賦值,實(shí)際應(yīng)用中可以根據(jù)需要更多  
  42.       switch(SearchFunc(str)) 
  43.       { 
  44.            case ONE_STAR: 
  45.            { 
  46.                 score += 1; 
  47.                 break; 
  48.            }  
  49.       
  50.            case TWO_STAR: 
  51.            { 
  52.                 score += 2; 
  53.                 break; 
  54.            } 
  55.    
  56.    
  57.           case THREE_STAR: 
  58.           { 
  59.                score += 3; 
  60.                break; 
  61.           } 
  62.    
  63.           case FOUR_STAR: 
  64.           { 
  65.                score += 4; 
  66.                break; 
  67.           } 
  68.    
  69.           case FIVE_STAR: 
  70.           { 
  71.                score += 5; 
  72.                break; 
  73.           } 
  74.   
  75.       
  76.           case ZERO:  // 無效的情況,打印無效提升  
  77.           { 
  78.                printf("\nYour input is invaild!\n"); 
  79.                break; 
  80.           } 
  81.    
  82.       }   
  83.   
  84.      // 輸入有效才進(jìn)行星級(jí)打印  
  85.      if(SearchFunc(str)!=ZERO) 
  86.      { 
  87.           printf("\nThe score is: %d\n",score); 
  88.      } 
  89.   
  90.      return 0; 
  91.  
  92.  
  93. /* 宏功能查找函數(shù) */   
  94. SearchFunc(char *s) 
  95.       int i;  
  96.   
  97.       for(i=0; i< sizeof(tab)/sizeof(tab[0]); i++) 
  98.       { 
  99.             if(strcmp(tab[i].str, s)==0) 
  100.             { 
  101.                   return tab[i].code; 
  102.             } 
  103.       } 
  104.   
  105.       return ZERO;     // 輸入不再范圍內(nèi)標(biāo)記為0  

2)運(yùn)行結(jié)果

① 輸入值在有效范圍1-5時(shí),結(jié)果如下:

② 輸入值不在有效范圍內(nèi)時(shí),結(jié)果如下:

本文轉(zhuǎn)載自微信公眾號(hào)「嵌入式雜牌軍」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系嵌入式雜牌軍公眾號(hào)。


本文標(biāo)題:編程意識(shí)——將字符串與功能宏進(jìn)行綁定
本文路徑:http://m.5511xx.com/article/ccehgoo.html