如何优雅地写出wordcount,C版本

需求分析:给出一篇英文文章,要求提取单词,并统计每个单词出现地次数

分析:也就是连续地字母要提取出来,作为一个单词,比如 it's 就需要提取出 it s 两个单词

实现:我的想法是首先用fscanf()函数将文章中连在一起地提取出来,类似 ok.    cs@cbhs,  hi! 这些,然后进行过滤,将这个整体地非字母替换成空格,然后将他写入一个临时文件,再从这个临时文件中读取,就达到了分解地目的;

部分代码

//读取、过滤、写入临时文件

void readFile(char *path){

    FILE *ori = fopen(path,"r");

   FILE *tempFile = fopen("tempFile.txt","w");

   char temp[1024];

    while(!feof(fp)){

         fscanf(ori,"%s",temp);

         for(int i = 0; i < strlen(temp); i++){

             if(!isLetter(temp[i])){

                  temp[i] = ' ';

             }

        }

      fprintf(tempFile,"%s\n",temp);

    }

}

注意,如果再次读取这个临时文件,也是采用fscaf()会存在一个bug,就是如果最后地是空行,会将上一行的内容拿过来,导致最后一行的误读,我的建议是写一个退格符,也就是 fprintf(tempFile,"\b");  就可以解决这个问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值