word count
2016-03-22 21:59
232 查看
WC项目要求
这个项目要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,给出某程序设计源语言文件的字符数、单词数和行数。给实现一个统计程序,它能正确统计程序文件的字符数、单词数、行数,以及其他扩展功能,并能够快速的处理多个文件。
用户需求
程序员处理需求的模式为:wc.exe [paramter][file_name]
各个参数的意义:
基本功能列表:wc.exe -c file.c:char count;
wc.exe -w file.c:char count;
wc.exe -l file .c:line count;
扩展功能:-s 递归处理目录下符合条件的文件
-a 返回高级选项(代码行、空行、注释行)
空行:本行全部是空格或者格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“}”
代码行:本行包括多于一个字符的代码。
注释行:本行不是代码行,并且本行包括注释,例如:}//注释。这种情况下,这一行属于注释行。
[file_name]:文件的目录名,可以处理一般通配符。
文本文件,确定字/词/句
高级功能:-x参数 这个参数单独使用,如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等信息。
需求举例:wc.exe -s -a *.c 返回当前目录、子目录所有.c文件的代码行数,空行数,注释行数。
这个程序本来是该昨天交的,但我这个疯狂动物城中的树懒拖延症患者今天才教。这个习惯得改啊。
程序如下:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int char_count=0,word_count=0,line_count=0;
void run(char * file)
{
FILE * fp;
char a;
fp=fopen(file,"r");
while(!feof(fp))
{
a=fgetc(fp);
if(a=='\n'||a=='\t')
line_count++;
if(a==' '||a=='\n'||a=='\t'||a==','||a=='.'||a=='!'||a=='='||a==';')
word_count++;
if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.'&&a!='!'&&a!=';'&&a!='=')
char_count++;
}
line_count++;
char_count--;
fclose(fp);
}
int main(int argc, char* argv[])
{
FILE *fp;
run(argv[2]);
while(1)
{
if((fp=fopen(argv[2],"r"))==NULL)
{
scanf("%s%s%s",argv[0],argv[1],argv[2]);
continue;
}
else if(!strcmp(argv[1],"-w"))
printf("总计:%s单词数:%d\n",argv[2],word_count);
else if(!strcmp(argv[1],"-l"))
printf("总计:%s行数:%d\n",argv[2],line_count);
else if(!strcmp(argv[1],"-c"))
printf("总计:%s字符数:%d\n",argv[2],char_count);
else if(!strcmp(argv[1],"exit"))
{
break;
}
printf("\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
}
return 0;
}
运行结果如下图:
这个项目要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,给出某程序设计源语言文件的字符数、单词数和行数。给实现一个统计程序,它能正确统计程序文件的字符数、单词数、行数,以及其他扩展功能,并能够快速的处理多个文件。
用户需求
程序员处理需求的模式为:wc.exe [paramter][file_name]
各个参数的意义:
基本功能列表:wc.exe -c file.c:char count;
wc.exe -w file.c:char count;
wc.exe -l file .c:line count;
扩展功能:-s 递归处理目录下符合条件的文件
-a 返回高级选项(代码行、空行、注释行)
空行:本行全部是空格或者格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“}”
代码行:本行包括多于一个字符的代码。
注释行:本行不是代码行,并且本行包括注释,例如:}//注释。这种情况下,这一行属于注释行。
[file_name]:文件的目录名,可以处理一般通配符。
文本文件,确定字/词/句
高级功能:-x参数 这个参数单独使用,如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等信息。
需求举例:wc.exe -s -a *.c 返回当前目录、子目录所有.c文件的代码行数,空行数,注释行数。
这个程序本来是该昨天交的,但我这个疯狂动物城中的树懒拖延症患者今天才教。这个习惯得改啊。
程序如下:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int char_count=0,word_count=0,line_count=0;
void run(char * file)
{
FILE * fp;
char a;
fp=fopen(file,"r");
while(!feof(fp))
{
a=fgetc(fp);
if(a=='\n'||a=='\t')
line_count++;
if(a==' '||a=='\n'||a=='\t'||a==','||a=='.'||a=='!'||a=='='||a==';')
word_count++;
if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.'&&a!='!'&&a!=';'&&a!='=')
char_count++;
}
line_count++;
char_count--;
fclose(fp);
}
int main(int argc, char* argv[])
{
FILE *fp;
run(argv[2]);
while(1)
{
if((fp=fopen(argv[2],"r"))==NULL)
{
scanf("%s%s%s",argv[0],argv[1],argv[2]);
continue;
}
else if(!strcmp(argv[1],"-w"))
printf("总计:%s单词数:%d\n",argv[2],word_count);
else if(!strcmp(argv[1],"-l"))
printf("总计:%s行数:%d\n",argv[2],line_count);
else if(!strcmp(argv[1],"-c"))
printf("总计:%s字符数:%d\n",argv[2],char_count);
else if(!strcmp(argv[1],"exit"))
{
break;
}
printf("\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
}
return 0;
}
运行结果如下图:
相关文章推荐
- CAS实现SSO单点登录原理
- 基于webrtc的媒体库测试代码以及接口介绍
- 接口与抽象类的总结
- 【codevs1477】【BZOJ2733】永无乡,Splay+启发式合并
- 【Linux多进程通信】共享内存
- 【poj 1426】Find The Multiple 题意&题解&代码(C++)
- blas和lapack的安装
- mybasit ,maven,spring-mvc与spring 的整合
- [leetcode 24]Swap Nodes in Pairs-----成对翻转链表中的节点
- 软件第四次作业
- 图的深度优先遍历
- matlab 使用的一点观察
- spring 注入学习
- jstl 写的分页
- 在Android中应用Rxjava
- 一个例子掌握JNI开发
- day21
- 定时器
- 软件开发中常用的linux命令,持续更新~~~~~~
- HDU 3065 病毒侵袭持续中