统计一个英文文件中各单词出现的次数,用一位数组如何实现

2025-01-05 11:15:35
推荐回答(1个)
回答1:

你的想法逻辑上不错,但是不可采取的。因为文件要是很大的话,能全部读进来吗?下面提供一个做参考。

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "ctype.h"
#include "string.h"
#include "stdlib.h"
struct WORD{
    char w[21];
    int n;
};
int main(void){
    int i,j,k,l;
    struct WORD w[1000];
    FILE *fp;
    if((fp=fopen("123.txt","r"))==NULL){
        printf("Open the file failure...\n");
        exit(0);
    }
    i=0;
    while(fscanf(fp,"%s",w[i].w),!feof(fp)){
        if(!isalpha(w[i].w[0]))
            strcpy(w[i].w,w[i].w+1);
        if(!isalpha(w[i].w[j=strlen(w[i].w)-1]))
            w[i].w[j]='\0';
        for(j=0;j            if(strcmp(w[j].w,w[i].w)==0){
                w[j].n++;
                break;
            }
        if(j>=i)w[i++].n=1;
    }
    fclose(fp);
    for(k=0;k        for(l=k,j=l+1;j            if(strcmp(w[l].w,w[j].w)>0) l=j;
        if(l!=k){
            w[i]=w[l];
            w[l]=w[k];
            w[k]=w[i];
        }
        printf("%-20s%d\n",w[k].w,w[k].n);
    }
    return 0;
}