2006.10.30

#include <stdio.h>
#include "string.h"
#define NULL 0
#define LINE 100
#define COLUMN 30
int ReadFile(FILE *infile);
void Sort(int n);
char arr[LINE][COLUMN];
int flag[LINE];
main()
{
 FILE *infile;
 char *c;
 int m=0,n=0,i,line;
 clrscr();
 printf("这个程序统计文件中单词的个数。/n");
 while(1)
 {
  printf("File name:");
  gets(c);
  infile=fopen(c,"r");
  if(infile!=NULL)break;
  printf("File %s not found--Try again./n",c);
 }
line=ReadFile(infile);
fclose(infile);
Sort(line);
printf("Word frequency table:/n");

 for(m=0;m<line;m++)
 {

   while(1)
    {
      if(arr[m][n]=='/n')break;
      printf("%c",arr[m][n]);
      n++;
    }
    if(n<8)
     {
       for(i=0;i<8-n;i++)
        printf(" ");
     }
   printf("/t%d/n",flag[m]);
   n=0;

 }

getch();
}

int ReadFile(FILE *infile)
{
 int ch,i=0,j=0,n;
  for(;i<LINE;i++)
    flag[i]=1;
  i=0;
 while((ch=getc(infile))!=EOF)
 {
  ch=tolower(ch);
    if(ch=='/n')continue;
     if(ch>='a'&&ch<='z')
      {
       arr[i][j]=ch;
        j++;
      }
     else
      {
            arr[i][j]='/n';
             i++;
             j=0;
        for(n=0;n<i-1;n++)
                 {
             if((strcmp(arr[n],arr[i-1]))==0)
                        {
                     i--;
                     flag[n]+=1;
                     break;
                        }
          }
      }
}
  arr[i][0]=NULL;
  return i;
}

void Sort(int n)
{
 int i,j,k,tmp;
 char *temp;
 for(i=0;i<n-1;i++)
 {
   k=i;
   for(j=i+1;j<n;j++)
   {
    if((strcmp(arr[k],arr[j]))>0)
    k=j;
   }
   if(k!=i)
    {
     strcpy(temp,arr[i]);
     strcpy(arr[i],arr[k]);
     strcpy(arr[k],temp);

     tmp=flag[i];
     flag[i]=flag[k];
     flag[k]=tmp;
    }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值