WordCount:C语言实现
项目地址:https://github.com/m8705/WordCount
项目要求
wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。
这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。
实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
基本功能列表:(已完成)
wc.exe -c file.c //返回文件 file.c 的字符数
wc.exe -w file.c //返回文件 file.c 的词的数目
wc.exe -l file.c //返回文件 file.c 的行数
扩展功能:(未完成)
-s 递归处理目录下符合条件的文件。
-a 返回更复杂的数据(代码行 / 空行 / 注释行)
高级功能:(未完成)
-x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。
PSP
| PSP2.1 | 预计耗时 | 实际耗时 |
|---|---|---|
| 总体计划 | 2h | 1.5h |
| 预计完成 | 10h | 12h |
| 程序开发 | 8h | 8h |
| 需求分析 | 0.5h | 0.2h |
| 设计文档 | 0.5h | 0.3h |
| 设计复审 | 0.5h | 0.5h |
| 代码规范 | 0.5h | 0.5h |
| 具体设计 | 1h | 1h |
| 具体编码 | 6h | 6h |
| 代码复审 | 1h | 2h |
| 程序测试 | 2h | 2h |
| 程序报告 | 1h | 1h |
| 测试报告 | 1h | 1h |
| 计算工作量 | 0.5h | 0.5h |
| 事后总结 | 2.5h | 2.5h |
| 总计时间 | 12h | 13.5h |
解题思路
用C语言Main函数接收参数,对参数进行判断,分别采用不同的方式统计数量即可。
代码
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char *argv[])
{ /*
printf("main函数收到了%d个参数\n",argc);//第一个参数默认是可执行文件本身,第二个参数开始是接受到的参数
int i;
for( i = 0; i < argc; i++ ){
printf("%s ",argv[i]);
}
printf("\n");
*/ if( argc == ){ //打印接受到的参数
/*
int i;
printf("收到的外部参数:");
for( i = 1; i < argc; i++ ){
printf("%s ",argv[i]);
}
printf("\n");
*/ //尝试读取文件的内容
char data;
FILE *fp = fopen(argv[],"r"); if(!fp){
printf("错误:文件读取失败\n");
return -;
} //对参数进行判断 if( !strcmp(argv[],"-c") ){//字符数
char temp;
int num = ;
temp = fgetc(fp);
while( temp != EOF ){
//putchar(temp);
temp = fgetc(fp);
num++;
}
printf("该文本文件的字符数为:%d\n",num); }
else if( !strcmp(argv[],"-w") ){//单词数
int w = ;
char a = fgetc(fp);
while( a != EOF){
if( (a >='a' && a <='z') || ( a >='A' && a <='Z') || ( a >='' && a <='') ){
while( (a >='a' && a <='z') || ( a >='A' && a <='Z') || ( a >='' && a <='') )
a =fgetc(fp);
w++;
a =fgetc(fp); }
else
a =fgetc(fp);
}
printf("该文本文件的单词数为:%d\n",w); }
else if( !strcmp(argv[],"-l") ){//行数
char temp;
int num = ;
temp = fgetc(fp);
while( temp != EOF ){ //putchar(temp);
if(temp == '\n'){//字符需要用单引号扩住
num++;
}
temp = fgetc(fp); }
printf("该文本文件的行数为:%d\n",num); }
else{
printf("错误:参数超出范围!\n");
printf("允许参数:-c,-w,-l\n");
}
int n=fclose(fp);
}
else{
printf("错误:运行参数必须要3个\n");
printf("用法:wc.exe [parameter] [file_name]\n");
}
system("pause");
return ;
}
运行结果

小结
通过这个项目,我复习了C语言相关知识,同时增进了自己对软件开发流程的理解
WordCount:C语言实现的更多相关文章
- WordCount C语言实现求文本的字符数,单词数,行数
1.码云地址: https://gitee.com/miaomiaobobo/WordCount 2.psp表格 PSP2.1表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) P ...
- 个人项目(WordCount C语言)
WordCount程序(C语言) Github地址:https://github.com/peter-ye-code/WordCount 一.题目描述 实现一个简单而完整的软件工具(源程序特征统计程序 ...
- 软件工程-wordcount(C语言实现)
Github项目地址:https://github.com/xiaobaot/wordcount-wc/tree/master WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数 ...
- 结对编程项目——C语言实现WordCount Web化
结对编程项目 代码地址 201631062219,201631011410 gitee项目地址:https://gitee.com/xxlznb/pair_programming 作业地址:https ...
- wordcount(C语言)
写在前面 上传的作业代码与测试代码放在GitHub上了 https://github.com/IHHHH/gitforwork 本次作业用的是C语言来完成,因为个人能力与时间关系,只完成了基本功能,扩 ...
- Scala,Java,Python 3种语言编写Spark WordCount示例
首先,我先定义一个文件,hello.txt,里面的内容如下: hello sparkhello hadoophello flinkhello storm Scala方式 scala版本是2.11.8. ...
- Spark源码编译并在YARN上运行WordCount实例
在学习一门新语言时,想必我们都是"Hello World"程序开始,类似地,分布式计算框架的一个典型实例就是WordCount程序,接触过Hadoop的人肯定都知道用MapRedu ...
- 软件工程-构建之法 WordCount小程序 统计文件中字符串个数,单词个数,词频,行数
一.前言 在之前写过一个词频统计的C语言课设,别人说你一个大三的怎么写C语言课程,我只想说我是先学习VB,VB是我编程语言的开始,然后接触到C语言及C++:再后来我是学习C++,然后反过来学习C语言, ...
- 利用Scala语言开发Spark应用程序
Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可 以阅读网络教程A Scala Tutorial for Ja ...
随机推荐
- HDU 6171 Admiral(双向BFS+队列)题解
思路: 最大步骤有20,直接BFS会超时. 因为知道开始情况和结果所以可以用双向BFS,每个BFS规定最大步骤为10,这样相加肯定小于20.这里要保存每个状态搜索到的最小步骤,用Hash储存.当发现现 ...
- Win10重命名文件夹导致资源管理器卡顿的解决办法
我本机使用的是 Win10 1607,不清楚是因为什么原因导致重命名文件夹时资源管理器会被卡死,找了很长时间终于找到了解决办法,现在我把步骤粘出来以便后续遇到相同问题的朋友能及时解决. 其实操作很简单 ...
- 【Python】【问题集锦】
1. 用pycharm安装第三方包失败,报类似于“sort"的错误,就转战终端 2. Mac终端安装第三包失败,报类似于“ PermissionError: [Errno 13] Permi ...
- c 宏的定义
#include <stdio.h> #include <conio.h> #define VAL 40 #ifdef VAL #undef VAL #endif #defin ...
- Ubuntu14.04(server amd 64)编译安装 ceres-solver
文档地址:http://www.ceres-solver.org/installation.html git地址:(需要FQ下载) git clone https://ceres-solver.goo ...
- Python day12部分内置函数的常见方法
#内置函数 print(abs(-1))#绝对值 ']))#判断list的真假,都真则真,有一个假也是假 print(any(''))#有一个真就真,全假则假 print(bin(3))#十进制转换二 ...
- 百度编辑器 Ueditor 上传图片时打开文件夹的延迟问题,点击上传图片弹窗打开慢问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/ima ...
- logback的使用和logback.xml详解[转]
一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...
- Observable类API
包java.util 类 Observable public class Observable extends Object 此类表示模型视图范例中的 observable 对象,或者说“数据”.可将 ...
- [html]点击button后画面被刷新原因:未设置type="button"
一.问题原因解析: 在form表单里的button, type 属性未设置的情况下,Internet Explorer 的默认类型是 "button",而其他浏览器中(包括 W3C ...