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 ...
随机推荐
- Linq 对List的一些操作
代码: public class Person { public int ID { get; set; } public string Name { get; set; } public int Ag ...
- MariaDB / MySQL数据类型
MariaDB / MySQL 数据类型 有三种主要的类型:Text(文本).Number(数字)和 Date/Time(日期/时间)类型. Text 类型: 数据类型 描述 CHAR(size) 保 ...
- div滚动条时div内容显示一半
本文为博主原创,未经允许不得转载 今天在做页面浏览器适配时,将页面中的一个div进行放大时,出现了滚动条,但滚动条对应div中的 内容只能显示一半. 仔细对应属性样式时,div具有overflow:h ...
- 高精度N的阶乘-N!
题目:输入一个正整数N(0<N<=30),求N! 代码: #include<stdlib.h> #include<cstdio> #include<strin ...
- 【TCP/IP详解 卷一:协议】第二十一章 TCP的超时与重传
作为TCP的重头戏,本章节涉及了许多关于计算方面的内容,使用了大量的例子来指明一些观点. 我使用的理解方法是:通过别人的博客,以及实例结合进行理解,不然会很吃力. 21.1 引言 reliable T ...
- windows 模拟用户会话创建进程
在渗透当中,经常会碰到这样的问题.一个机器,机器上好几个用户,或者域内,想让某个机器的某个会话执行你想要执行的程序,或者中马,以当前会话来上线. 现在模拟如下的一个情况: 严格的DMZ,内网--> ...
- 在线客服 分享 qq 一键加好友 一键入群
1.在线客服 <a href="tencent://message/?uin=qqnum&Site=&menu=yes">qq客服</a> ...
- [html]点击button后画面被刷新原因:未设置type="button"
一.问题原因解析: 在form表单里的button, type 属性未设置的情况下,Internet Explorer 的默认类型是 "button",而其他浏览器中(包括 W3C ...
- 雷林鹏分享:C# 异常处理
C# 异常处理 异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零. 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式.C# 异常处理时建立 ...
- 肠道型(enterotype)简介
An enterotype is a classification of living organisms based on its bacteriological ecosystem in the ...