中央論壇 - CENTER BBS

標題: 中文字元的判斷 [打印本頁]

作者: f66666602    時間: 2007-8-14 04:40
標題: 中文字元的判斷
  1. BOOL IsChinese(char ch1, char ch2);

  2. void main()
  3. {
  4.         BOOL        bChinese = FALSE;
  5.         char        szInput[64] = {0};
  6.         char        szTemp[3] = {0};
  7.         char        szSearch[] =  "三" ;
  8.         int                i = 0;
  9.         int                nCount = 0;

  10.         printf(" \n請輸入字串: ");
  11.         scanf( "%64s " , &szInput);

  12.         // 計算字串中,出現指定中文字的次數
  13.         while(i < strlen(szInput)-1)
  14.         {
  15.                 // 比對是否為中文字(因中文字占2個字元大小,所以一次拿取二個字元作比對)
  16.                 bChinese = IsChinese(szInput, szInput[i+1]);

  17.                 // 若是中文字
  18.                 if(bChinese == TRUE)
  19.                 {
  20.                         // 將找到的中文字,放到szTemp中
  21.                         szTemp[0] = szInput;
  22.                         szTemp[1] = szInput[i+1];

  23.                         // 比對是否為要找的中文字
  24.                         if( strcmp(szTemp, szSearch) == 0 )
  25.                         {
  26.                                 nCount++;
  27.                         }

  28.                         i += 2;
  29.                 }
  30.                 else
  31.                 {
  32.                         i++;
  33.                 }
  34.         }

  35.         printf(" \n中文字 \"%s \" 出現的次數為%d次\n ", szSearch, nCount);

  36.         system( "pause" );
  37. }

  38. // 比對是否為中文字(因中文字占2個字元大小,所以一次拿取二個字元作比對)
  39. // 第一個字元若為0xA1-0xF9,而且第二個字元為0x40-0x7F或0xA1-0xFE
  40. // 則為一個中文字(BIG5編碼)
  41. BOOL IsChinese(char ch1, char ch2)
  42. {
  43.         BOOL        bResult = FALSE;

  44.         // 檢查第一個字元是否為0xA1-0xF9
  45.         if(ch1 >= (char)0xa1 && ch1 <= (char)0xf9)
  46.         {
  47.                 // 檢查第一個字元是否為0x40-0x7F或0xA1-0xFE
  48.                 if( (ch2 >= (char)0x40 && ch2 <= (char)0x7f) || (ch2 >= (char)0xa1 && ch2 <= (char)0xfe) )
  49.                 {
  50.                         // 這是一個中文字
  51.                         bResult = TRUE;
  52.                 }
  53.         }

  54.         return bResult;
  55. }
複製代碼





歡迎光臨 中央論壇 - CENTER BBS (https://www.centerbbs.com/) Powered by Discuz! X3