|
|
- 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;
- }
複製代碼 |
|