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的更多相关文章

  1. 第二个项目:WC

    第二个项目:Word Count 一.主要功能:文件中字符数.单词数.行数的统计 二.github源码和工程文件地址:https://github.com/miniyuan222/the-second ...

  2. 个人小项目——Java实现WC功能

    这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文 ...

  3. Andriod小项目——在线音乐播放器

    转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...

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

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

  5. 小项目特供 贪吃蛇游戏(基于C语言)

    C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...

  6. 基于visual Studio2013解决算法导论之015第二小元素

     题目 查找第二小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...

  7. Django集成celery实战小项目

    上一篇已经介绍了celery的基本知识,本篇以一个小项目为例,详细说明django框架如何集成celery进行开发. 本系列文章的开发环境: window 7 + python2.7 + pychar ...

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

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

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

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

随机推荐

  1. 权限大全-linux基础

    一.文件权限 (1)文件的权限主要针对三类对象定义: u:属主,owner    g:属组,group    o:其他,other    权限有三种:    r:可读    w:可写    x:可执行 ...

  2. Java的HashMap实现原理整理总结

    通过Debug 探寻Java-HashMap 实现原理: 一个简单的例子,代码如下, 测试方法 main: public static void main(String[] args) { KeyOb ...

  3. Ubuntu 14.04 安装LNMP(nginx/1.12.1+php7.1.9+mysql5.7.19)环境

    这篇教程中,我们将讨论怎样在Ubuntu 14.04搭建LNMP环境 1 安装Nginx 首先我们要更新apt源 sudo add-apt-repository ppa:nginx/stable  s ...

  4. h5新增html标签语义

    H5新增常用标签<body> <header>...</header> <nav>...</nav> <article> < ...

  5. Linux-tar命令(2)

    tar 用于可以为文件和目录创建档案.可以为某一特定文件打包(备份文件), 也可以在档案中改变文件,或者向档案中加入新的文件. 主选参数: 主选参数仅能存在一个!不可同时存在!因为不可能同时压缩与解压 ...

  6. 【C++小白成长撸】--(续)双偶数N阶魔阵

    原理: 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4) 每个魔阵的对角线都标为"-1",其余位置标为"0" 从第一个位置(a[0][0])从左到右,从 ...

  7. 数据绑定技术一:GridView控件

    在网站或应用程序中,要显示数据信息,可用到ASP.NET提供的数据源控件和能够显示数据的控件. 一.数据源控件 数据源控件用于连接数据源.从数据源中读取数据以及把数据写入数据源. 1.数据源控件特点 ...

  8. 从聚合数据请求菜谱大全接口数据,解析显示到ListView

  9. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  10. Adobe Flash Player 因过期而遭遇阻止怎么办

    百度搜索"adobe flash player ppapi "并找到搜索结果中包含www.adobe.com的网址进行在线下载安装即可搞定这个问题[注意要对应你电脑系统中的浏览器, ...