單詞統計_統計文章中每一個單詞出現的頻率

//預先存入工程文件的文章tex文檔
#include<stdio.h>
#include<string.h>
//using namespace std
typedef struct//儲存字符和權值
{   char str[20];
    int mount;
}tj;

int main()
{
    int i,j,k,n=0;  int allmount=0;
    tj TJ[3000];//********************只需修改該兩行便能改變統計容量
    for(i=0;i<3000;i++)   //初始化 ,最大能記錄3000種不一樣(單詞)的權值信息
    {   
        for(j=0;j<20;j++)
            TJ[i].str[j]='\0';//存儲字符的數組所有置空
        TJ[i].mount=0;//權值置爲0
    }
    char strl[20]={'\0'};//讀取的字符串(單詞)臨時存儲在該數組中
    char s[300000]={'\0'}, *p;//存儲從文本文檔中讀過來的信息(字符)//**************能讀入的文本容量在此可修改
    FILE *fp;
    fp=fopen("文檔.txt","r");  
    fgets(s,250000,fp);//從文本文檔中讀取250000個字符存儲在s[60000]中(讀不到換行後的文字信息)
    //char *p="the the the of of of he he ";
    i=0;    p=s;//用指針指向待統計的文本信息
    for(  ;*p!='\0';p++)//注意記事本里的空格字符' '和空字符'\0'是有區別的(光標的可以放的最右位置就是右邊有多少空格字符)
    {
        if(*p!=' '&&*p!=','&&*p!='.'&&*p!='?'&&*p!=';'&&*p!=':')   j=1;
        else   j=0;    
        if(j==1) 
        { strl[i]=*p;  i++; }//讀取字符臨時存儲於strl[i]
        else
        {   if(strl[0]!=NULL)  //或strl[0]!='\0'
            {    for(j=0;j<n;j++)
                    if(!strcmp(TJ[j].str,strl)) //若是存在已有的單詞與新讀取的單詞相同,權值+1 /*(TJ[j].str==strl)老是=0???*/ 
                    {   TJ[j].mount++;  
                        for(k=0;k<20;k++)   strl[k]='\0';//從新置strl[]爲空串
                           break;  
                    }
                if(j==n)  //原來讀取的單詞中沒有於當前讀取的單詞相同的狀況
                {  strcpy(TJ[n].str,strl);                     
                   for(k=0;k<20;k++)  strl[k]='\0';
                   TJ[n].mount=1;  
                   n++; 
                }
                i=0;
                allmount++;//遇到非字符串就加1
            }  
            //allmount++;//遇到非字符串就加1,放在此處時空格也被算入
        }    
    }
    printf("共統計%d個單詞\n", allmount);//輸出統計的單詞總數
    int jianyan=0;
    for(i=0;i<n;i++)//輸出單詞及其權值
    {   if(i%3==0)  printf("\n");        
        printf("(%3d) %-15s",i,TJ[i].str);
        printf("%-5d",TJ[i].mount);    
        jianyan+=TJ[i].mount;
    }
    printf("\n(檢驗統計)共統計%d個單詞\n", jianyan);//*******************用於檢驗
    getchar();
    return 0;
}
    

相關文章
相關標籤/搜索