软件工程个人第二小项目——wc
github源码和工程文件地址:https://github.com/HuChengLing/wc
基本要求:要实现wc的基本功能即文件中字符数、单词数、行数的统计。
主要功能:文件中字符数、单词数、行数的统计和注释行统计。
设计思想:将文件中的一行字符读完来统计行数,然后运用字符数组再去分别统计字符数和单词数。
程序代码:
#include<stdlib.h>
#include<stdio.h>
#include<string>
void signalcount(char *Filename);
void main()
{ int c = , w = , l = ;
int signline = ;
FILE *fp;
char fileName[];
char ch[];
//bool inword = false;//字符在单词中,inward等于ture
printf("please input fileName:");
gets_s(fileName);
fp = fopen(fileName, "r");
if (fp == NULL)
{
printf("can't open file %s\n", fileName);
getchar();
exit();
}
while (!feof(fp))
{
fgets(ch, , fp);
l++;
int length = strlen(ch);
for (int i = ; i < length; i++)
{
//判断是不是空格不是的话在while里面i++执行判断到下一个空格的出现或是结束
if (ch[i] != ' ')
{
w++;
//if ((ch[i] > '0'&&ch[i]<'9' || ch[i]>'a'&&ch[i], 'z' || ch[i] > 'A'&&ch[i] < 'Z') && ch[i] != ' ')
//c++;
while (ch[i] != ' '&&ch[i] != '\0')
{ if ((ch[i] > ''&&ch[i]<'' || ch[i]>'a'&&ch[i], 'z' || ch[i] > 'A'&&ch[i] < 'Z') && ch[i] != ' '&&ch[i] != '\n')
c++;
i++; }
} }
}
printf("一共有:%d行 %d个单词 %d个字符", l, w, c);
signalcount(fileName);
fclose(fp);
system("pause");
} void signalcount(char *filename)
{
int len = , i = ,signline = ;
FILE *fp;
char str[];
fp = fopen(filename, "r");
if (fp == NULL)
{
printf( "请在文件中添加内容\n") ;
exit(-);
}
while (!feof(fp))
{
fgets(str, sizeof(str), fp);
len = strlen(str);
for (i = ; i<len; i++)
{
if ((str[i] == '/'&&str[i + ] == '/') || (str[i] == '/'&&str[i + ] == '*'))
{
signline++;
break;
}
}
}
fclose(fp);
printf( "注释行数%d行\n", signline);
}
自己虽然是自己写了一些但是自己也借鉴了许多网上的代码。而且现在还存在着不能读汉字的bug有待改进。
软件工程个人第二小项目——wc的更多相关文章
- 第二个项目:WC
第二个项目:Word Count 一.主要功能:文件中字符数.单词数.行数的统计 二.github源码和工程文件地址:https://github.com/miniyuan222/the-second ...
- 个人小项目——Java实现WC功能
这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文 ...
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- Surprise团队第二周项目总结
Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在lay ...
- 小项目特供 贪吃蛇游戏(基于C语言)
C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...
- 基于visual Studio2013解决算法导论之015第二小元素
题目 查找第二小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...
- Django集成celery实战小项目
上一篇已经介绍了celery的基本知识,本篇以一个小项目为例,详细说明django框架如何集成celery进行开发. 本系列文章的开发环境: window 7 + python2.7 + pychar ...
- 团队作业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冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...
随机推荐
- TP-Link路由器的设置向导
TP-Link路由器的设置向导.. 一.准备工作: 1.首先是路由器的安装,主要是将路由器电源接上,并通电,然后就是网线的连接.如果是拨号上网用户,请将猫引出的网线插入到TP-Link路由器最特别的一 ...
- Html中<Hr>标签、样式的使用和自定义设置
<Hr>标签中样式的使用和自定义设置... -------------------- ====================== 已经测试过了可以用的Hr样式: <!--这是一部分 ...
- webSocket浏览器握手不成功(解决)
websocket与服务端握手会报握手不成功的错误解决方法: 首先是服务端首次收到请求要回报给客户端的报文要做处理多的不说,方法敬上: /// <summary> /// 打包请求连接数据 ...
- Ext.data.Store添加动态参数
多条件查询页面的参数都是动态的,并且我们通常还会有默认加载页面.此时,动态添加参数非常重要,其中baseparam是解决问题的关键. @ 将查询条件定义为一个全局变量 var param_01 = & ...
- 三、nginx实现反向代理负载均衡
1.反向代理 需求: 两个tomcat服务通过nginx反向代理 nginx服务器:192.168.101.3 tomcat1服务器:192.168.101.5 tomcat2服务器:192.168. ...
- Ibatis XML 配置文件注释引起错误及解决方案
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp35 Ibatis XML 配置文件注释引起错误及解决方案 最近在使用Iba ...
- 【小白成长撸】--链栈(C语言版)
// 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...
- NWERC2016-Problem A(Arranging Hat)
Arranging Hat is a cushy job indeed; high impact work, absolute authority, and 364 days of holiday e ...
- c# HttpWebRequest 模拟HTTP post 传递JSON参数
//HTTP post JSON 参数 private string HttpPost(string Url, Object ticket) { ...
- 个人作业2——必应词典APP分析
第一部分:调研.评测 1.刚刚打开必应词典的时候,它给我的第一反应就是界面美观,最上面是一个查询框,下面有一些经典的句子.单词以及一些精选的文章,所有的功能都可以一目了然,看一眼就知道要怎么去使用,这 ...