第二个项目:Word Count

一、主要功能:文件中字符数、单词数、行数的统计

二、github源码和工程文件地址:https://github.com/miniyuan222/the-second

三、代码展示:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int readData(char filename[]);
void writeData(int n, int x);
int hanzi(char filename[]);

void main(void)
{
char name[40] = "H:\\1.txt";
int word_num;
int hanzi_num;

word_num = readData(name);
hanzi_num = hanzi(name);
writeData(word_num, hanzi_num);
system("pause");

}

int readData(char filename[]) //此函数计算英文单词个数
{
FILE* fp;
char ch;
char flag = 0;
int num = 0;

if ((fp = fopen(filename, "r")) == NULL)
{
printf("%s open failure", filename);
exit(EXIT_FAILURE);
}
printf("%s open sucessfully!~\n", filename);

while (!feof(fp))
{
ch = fgetc(fp);
//(ch < 0x80) 排除汉字的干扰
if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'))
flag = 0;
else if (flag == 0 && (ch != '-' && ch != '/'&& ch != '\''))
{
num++;
flag = 1;
}
}
fclose(fp);
return num;
}

int hanzi(char filename[]) //此文件计算汉字个数
{
FILE* fp;
int ch; //注意这里是int型的
int count = 0;
if ((fp = fopen(filename, "r")) == NULL)
{
printf("%s open failure.\n", filename);
exit(EXIT_FAILURE);
}

while (!feof(fp))
{
ch = fgetc(fp);
if (ch == -1)
break;

if (ch >= 0x80)
{
count++;
ch = fgetc(fp);//为什么要再来一次? 哦 因为fgetc每次只能取到一个字节 汉字是两个字节(可能是为了废掉一个字节)
}

}
fclose(fp);
return count;
}

void writeData(int n, int x) //此文件输出
{
FILE* fp;
if ((fp = fopen("D:\\result.txt", "a")) == NULL)
{
printf("File open failure!!!");
exit(EXIT_FAILURE);
}

fprintf(fp, "文件中的单词个数为%d\n", n);
fprintf(fp, "文件中的汉字个数为%d\n", x);

printf("文件中的单词个数为%d\n", n);
printf("文件中的汉字个数为%d\n", x);

printf("结果保存在D:\\result.txt当中\n");
fclose(fp);

}

四、总结:代码借鉴网上分享,并且与同学相互交流修改,增加了一个可以将统计结果保存到原文件里的功能,最后完成了该小项目。

最新文章

  1. 小制作-css+html旋转木马
  2. [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)
  3. hdu 5167 Fibonacci 打表
  4. 配置集群Nginx+Memcached+Tomcat集群配置
  5. swift 如何使用OC中宏的功能
  6. BZOJ 1718: [Usaco2006 Jan] Redundant Paths 分离的路径( tarjan )
  7. SQLServer-----SQLServer 2008 R2卸载
  8. html readonly和disabled的区别
  9. MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
  10. Java学习笔记7(简易的超市库存管理系统示例)
  11. Spring学习笔记(1)
  12. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境
  13. java 自带的工具
  14. Oracle实用地址
  15. springboot实现国际化
  16. MSMQ理论+实践(上)
  17. VMware安装vnwaretools
  18. 北京Uber优步司机奖励政策(3月28日)
  19. (转)HTML5之渐变
  20. C# 多线程之线程同步

热门文章

  1. idea设置java内存
  2. nodemon 热更新
  3. React 记录(5)
  4. 【cpp】chap 8
  5. I2C与EEPROM
  6. 可持久化 trie 的简单入门
  7. 【原创】大叔经验分享(28)ELK分析nginx日志
  8. Java_Character类
  9. 基于BootStrap的initupload()实现Excel上传和获取excel中的数据
  10. 金蝶k3wise 核算项目、辅助资料