中央論壇 - CENTER BBS

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

作者: f66666602    時間: 2007-9-4 09:05
標題: 中文字元的判斷
BOOL IsChinese(char ch1, char ch2);

void main()
{
        BOOL        bChinese = FALSE;
        char        szInput[64] = {0};
        char        szTemp[3] = {0};
        char        szSearch[] =  "三" ;
        int                i = 0;
        int                nCount = 0;

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

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

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

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

                        i += 2;
                }
                else
                {
                        i++;
                }
        }

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

        system( "pause" );
}

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

        // 檢查第一個字元是否為0xA1-0xF9
        if(ch1 >= (char)0xa1 && ch1 <= (char)0xf9)
        {
                // 檢查第一個字元是否為0x40-0x7F或0xA1-0xFE
                if( (ch2 >= (char)0x40 && ch2 <= (char)0x7f) || (ch2 >= (char)0xa1 && ch2 <= (char)0xfe) )
                {
                        // 這是一個中文字
                        bResult = TRUE;
                }
        }

        return bResult;
}





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