日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

編 者 悟 語

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

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

文 章 導(dǎo) 讀

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

1 代碼原理說明

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

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

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

2 實現(xiàn)源碼

1)實現(xiàn)代碼

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

 
 
 
 
  1. #include  
  2. #include  
  3.  
  4. // 功能宏散轉(zhuǎn)編號  
  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. /* 定義查找對應(yīng)表結(jié)構(gòu)及查找表數(shù)組 */ 
  15. static struct lookuptable  
  16.      char *str;   // 指向字符串  
  17.      int code;    // 對應(yīng)宏功能碼  
  18. }tab[]= {      
  19.      // 字符串口與功能指示紅的對應(yīng)表,可以根據(jù)需要隨意調(diào)整,下面的1-5可以換為任意字符串,只是輸入時(查找時)也要一一對應(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ù)星級進行處理,這里就是簡單的賦值,實際應(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.      // 輸入有效才進行星級打印  
  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)運行結(jié)果

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

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

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


當(dāng)前題目:編程意識——將字符串與功能宏進行綁定
當(dāng)前地址:http://www.dlmjj.cn/article/ccehgoo.html