文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>求字的个数

求字的个数

时间:2009-08-09  来源:ubuntuer

有一段文本,由英文字母、阿拉伯数字、GB2312编码的中文字符和一些常用标点符号(假设只包含全/半角的逗号和句子)组成。请写出程序,统计这段文本中每个字的出现次数,对“字”的定义如下: 1,连续的英文字母或者阿拉伯数字,例如ab3或123,但最长不超过32个字符; 2,包含不超过一个半角句点的两段连续数字,例如2.34,但最长不超过32个字符 3,单个汉字                             汉字编码范围

名称

第一字节

第二字节

GB2312

0xB0-0xF7(176-247)

0xA0-0xFE(160-254)

GBK

0x81-0xFE(129-254)

0x40-0xFE(64-254)

Big5

0x81-0xFE(129-255)

0x40-0x7E(64-126)

0xA1-0xFE(161-254)

#include <stdio.h>
#include <stdlib.h>

#define MAX_LEN 100
#define MAX_WORD 32

int is_words(char* str)
{
  int flag1 = 0;
  int flag2 = 0;
  char* tmp = str;
  while(*tmp)
   {
     if(*tmp>='0' && *tmp<='9' )
       tmp++;
     else if(*tmp == '.')
       {
        flag1 = 1;
        tmp++;
        }
     else
      {
       flag2 = 1;
       tmp++;
      }
   }
   
  if(flag1 && flag2)
   return 0;
  else
   return 1;
}

int main(int argc, char *argv[])
{
  int count = 0;
  int i = 0;
  int j = 0;
  
  char line[MAX_LEN];
  char words[MAX_WORD];
  FILE* fp = fopen("words.txt","r");
  while(fgets( line, MAX_LEN, fp))
   {
    i = 0;
    while(line[i]!='\n'&&line[i]!='\0')
    {
      if(line[i]&0x80)
      {
       unsigned char ch1 = (unsigned char)(line[i]);
       unsigned char ch2 = (unsigned char)(line[i+1]);
       
       if( ch1>=0xB0 && ch1<=0xF7 && ch1>=0xA0 && ch1<=0xFE )
         {
           char chinese[3];
           snprintf( chinese, 2, "%s", line+i);
           chinese[2] = '\0';
           count++;
           printf("chinese words %d is %s\n", count, chinese);
         }
        i += 2;
      }
      else
      {
        words[j] = line[i];
        i++;
        j++;
        if(line[i]&0x80)
         {
           words[j] = '\0';
           if(is_words(words))
            {
             count++;
             printf("number words %d is %s\n", count, words);
            }
           j = 0;
         }
       }
     }
   }
  
  system("PAUSE");    
  return 0;
}

相关阅读 更多 +
排行榜 更多 +
动物大战僵尸I

动物大战僵尸I

飞行射击 下载
龙兽争霸无限零件图纸

龙兽争霸无限零件图纸

飞行射击 下载
车祸卡车模拟器

车祸卡车模拟器

赛车竞速 下载