第二个项目: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的更多相关文章

  1. 软件工程个人第二小项目——wc

    github源码和工程文件地址:https://github.com/HuChengLing/wc 基本要求:要实现wc的基本功能即文件中字符数.单词数.行数的统计. 主要功能:文件中字符数.单词数. ...

  2. Surprise团队第二周项目总结

    Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在lay ...

  3. 【集美大学1411_助教博客】团队作业8——第二次项目冲刺(Beta阶段)

    写在前面的话 此次团队作业8可以拆分成两部分:1.beta阶段冲刺计划安排,2.7天敏捷冲刺."我们很低调"没有使用leangoo,经过与张老师的商议,张老师同意他们不使用lean ...

  4. 【1414软工助教】团队作业8——第二次项目冲刺(Beta阶段) 得分榜

    题目 团队作业8--第二次项目冲刺(Beta阶段) 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1:团队展示 团队作业2:需求分析&a ...

  5. 团队作业8——第二次项目冲刺(Beta阶段)--5.19 first day

    团队作业8--第二次项目冲刺(Beta阶段)--5.19 Day one: 会议照片 项目进展 由于今天是Beta版本项目冲刺的第一天,所以没有昨天已完成任务.以下是今日具体的任务安排. 队员 今日计 ...

  6. 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day

    团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...

  7. 团队作业8——第二次项目冲刺(Beta阶段)--5.23 third day

    团队作业8--第二次项目冲刺(Beta阶段)--5.23 third day Day three: 会议照片 项目进展 今天是beta冲刺的第三天,组长回到了队伍当中,正式开始改进alpha中存在的功 ...

  8. 团队作业8——第二次项目冲刺(Beta阶段)--5.24 forth day

    团队作业8--第二次项目冲刺(Beta阶段)--5.24 forth day Day four: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...

  9. 团队作业8——第二次项目冲刺(Beta阶段)--5.25 5th day

    团队作业8--第二次项目冲刺(Beta阶段)--5.25 fifth day Day five: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...

随机推荐

  1. Matlab怎么修改显示数值格式/精度/小数位数

    参考:https://jingyan.baidu.com/article/7f41ecec1ad029593c095c70.html

  2. 基于百度API+Flask实现网页版和图灵机器聊天

    开发前准备 调用百度和图灵机器人相关的 参考链接:www.cnblogs.com/changtao/p/10596385.html 下载一个网页录音的js插件 链接:https://pan.baidu ...

  3. 菜鸟博客装饰分享CSS+HTML+js

    博客布局更改,各种百度,自己修改,搞成现在这样,有兴趣的朋友可以复制我下面的把自己博客覆盖了,然后在进行更改 不懂可加群问我:675678830 如果想开通打赏,用到js,需要在 下列中 博客侧边栏公 ...

  4. php页面编码设置

    php的header来定义一个php页面为utf编码或GBK编码 php页面为utf编码 header("Content-type: text/html; charset=utf-8&quo ...

  5. js中split 正则表示式 (/[,+]/)

    定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separator,howmany) separator 作为分隔符,separator ...

  6. python学习第24天

    内置方法 常用 __new__ __del__ __call__ 不常用 __str__ __repr__ __enter__ __exit__

  7. 【原创】大数据基础之Zookeeper(1)介绍、安装及使用

    zookeeper3.4.11 http://zookeeper.apache.org/ 一 简介 ZooKeeper is a centralized service for maintaining ...

  8. CSS选择器权重计算

    CSS各种选择器的权重: 1.ID选择器  +100 2.类.属性.伪类选择器   +10 3.元素.伪元素选择器   +1 4.其他选择器   +0 如果有两个CSS样式都作用于某元素,如: #id ...

  9. day19模块1

    http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict.list.set.tup ...

  10. 学习笔记: Expression表达式目录树详解和扩展封装

    1. 表达式链接扩展封装,ORM常用 And  Or /// <summary> /// 表达式访问者 /// </summary> public class Expressi ...