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 ...
随机推荐
- 第八章 对称加密算法--AES
注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第7章“初等加密算法--对称加密算法” 8.1.AES 特点: 密钥建立时间短.灵敏性好.内存需求低(不管怎样,反正就是好) ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)
A - Toy Train 很显然,一个站有多少个糖,那么就要从这个点运多少次.设第i个点有\(a_i\)个糖,那么就要转\(a_i-1\)圈,然后再走一段.很显然最后一段越小越好. 然后枚举起点后, ...
- Unity3D学习笔记(十八):动画内容补充
动画系统: 旧动画系统(帧动画系统:关键帧驱动,关键帧记录的数据进行插值移动) 1.添加Animation,添加到父物体上 2.添加动画片段 3.添加关键帧(子物体的坐标是相对于父物体的坐标),帧之间 ...
- Java之Elasticsearch 增删改查
<!--ELK --> <dependency> <groupId>org.elasticsearch.client</groupId> <art ...
- shell 注释
以 # 开头的行就是注释,会被解释器忽略. 通过每一行加一个 # 号设置多行注释,像这样: #-------------------------------------------- # 这是一个注释 ...
- Selenium UI自动化测试 Selenium Automatic Testing
https://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html UI Automatic Testing 1. 什么样的项目适合自 ...
- ZC_C++类函数指针_模拟_Delphi类函数指针
ZC: C++的类函数指针 不像 Delphi的类函数指针,前者 需要规定死 是哪个类的函数的指针,后者就不需要 很灵活. 测试环境: Win7x64 cn_visual_studio_2010_ul ...
- spring boot 定时备份数据库
第一步 :添加mysqldump.exe 进环境变量 第二步 新建一个spring boot 项目,连接数据库 spring.datasource.url=jdbc:mysql://localhos ...
- git问题解决(摘录)
https://blog.csdn.net/dxk539687357/article/details/54629274
- Codeforces 834C - The Meaningless Game
834C - The Meaningless Game 数学. 思路1:判断a•b能不能化成v3且a%v==0且b%v==0.v可以直接用pow求(或者用cbrt),也可以二分求:还可以用map映射预 ...