第二个项目:WC
第二个项目: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);
}
四、总结:代码借鉴网上分享,并且与同学相互交流修改,增加了一个可以将统计结果保存到原文件里的功能,最后完成了该小项目。
第二个项目:WC的更多相关文章
- 软件工程个人第二小项目——wc
github源码和工程文件地址:https://github.com/HuChengLing/wc 基本要求:要实现wc的基本功能即文件中字符数.单词数.行数的统计. 主要功能:文件中字符数.单词数. ...
- Surprise团队第二周项目总结
Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在lay ...
- 【集美大学1411_助教博客】团队作业8——第二次项目冲刺(Beta阶段)
写在前面的话 此次团队作业8可以拆分成两部分:1.beta阶段冲刺计划安排,2.7天敏捷冲刺."我们很低调"没有使用leangoo,经过与张老师的商议,张老师同意他们不使用lean ...
- 【1414软工助教】团队作业8——第二次项目冲刺(Beta阶段) 得分榜
题目 团队作业8--第二次项目冲刺(Beta阶段) 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1:团队展示 团队作业2:需求分析&a ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.19 first day
团队作业8--第二次项目冲刺(Beta阶段)--5.19 Day one: 会议照片 项目进展 由于今天是Beta版本项目冲刺的第一天,所以没有昨天已完成任务.以下是今日具体的任务安排. 队员 今日计 ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day
团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.23 third day
团队作业8--第二次项目冲刺(Beta阶段)--5.23 third day Day three: 会议照片 项目进展 今天是beta冲刺的第三天,组长回到了队伍当中,正式开始改进alpha中存在的功 ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.24 forth day
团队作业8--第二次项目冲刺(Beta阶段)--5.24 forth day Day four: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.25 5th day
团队作业8--第二次项目冲刺(Beta阶段)--5.25 fifth day Day five: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...
随机推荐
- openstack项目【day23】:云计算介绍(一)
本节内容 为何选择云计算/云计算之前遇到的问题 什么是云计算 云服务模式 云应用形式 传统应用与云感知应用 一:为何选择云计算/云计算之前遇到的问题 一.有效解决硬件单点故障问题 单点故障是指某个硬件 ...
- django - 总结 - 用户认证组件
用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...
- Node.js实战项目学习系列(3) CommonJS 模块化规范
前言 想开始编写Node.js代码,那么我们就必须先熟悉它的模块化规范CommonJS,本文将详细讲解CommonJS规范 本文代码 >>> github 地址 CommonJS N ...
- ElasticSearch 启动时加载 Analyzer 源码分析
ElasticSearch 启动时加载 Analyzer 源码分析 本文介绍 ElasticSearch启动时如何创建.加载Analyzer,主要的参考资料是Lucene中关于Analyzer官方文档 ...
- maven私库nexus2.11.4迁移升级到nexus3.12.0
nexus简介 nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问. nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据 .n ...
- CSS三种样式
CSS 指层叠样式表 (Cascading Style Sheets): 1 内联样式:无法复用,在元素style内写 ,很少使用: 2 内部样式:在head元素内style属性内写,此样式可以被当前 ...
- python下调用pytesseract识别某网站验证码
一.pytesseract介绍 1.pytesseract说明 pytesseract最新版本0.1.6,网址:https://pypi.python.org/pypi/pytesseract Pyt ...
- python中的转义字符
当我们需要在字符中添加特殊符号时,我们需要用\(即反斜杠来转义字符) 常用的转义字符: 注:如果不想转义添加的特殊字符,需要显示字符串原来的意思的时候,需要用r或R来定义 结果是这样的
- 程序设计-理解java继承-遁地龙卷风
(0)写在前面 编程和现实世界是息息相关的,你是如何理解现实世界中的继承呢? 继承在编程中应理解为:对父类资源(本文只讨论方法)的使用,父类方法只提供类基本的功能,父类方法之间不存在调用关系. (1) ...
- Django之Xadmin
零.预备知识 单例对象 方式一:__new__方法 方式二:模块导入,只要在引入的文件中实例了这个对象,不管引道哪里,这个对象都指向同一个内存空间 class My_singleton(object) ...