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 charcalculate=0;

int wordcalculate=0;

int linecalculate=0;

void calculate(char * file)

{

FILE * fp;

char a;

if((fp=fopen(file,"r"))==NULL)

{

printf("read file failed!\n");

exit(-1);

}

while(!feof(fp))

{

a=fgetc(fp);

if(a!=‘ ‘&&a!=‘\n‘&&a!=‘\t‘&&a!=‘,‘&&a!=‘.‘&&a!=‘!‘&&a!=‘;‘&&a!=‘=‘)

charcalculate++;

if(a==‘ ‘||a==‘\n‘||a==‘\t‘||a==‘,‘||a==‘.‘||a==‘!‘||a==‘=‘||a==‘;‘)

wordcalculate++;

if(a==‘\n‘||a==‘\t‘)

linecalculate++;

}

linecalculate++;

charcalculate--;

fclose(fp);

}

int main(int argc, char* argv[])

{

FILE *fp;

calculate(argv[2]);

while(1)

{

if((fp=fopen(argv[2],"r"))==NULL)

{

printf("FileNull\n\n\n");

scanf("%s%s%s",argv[0],argv[1],argv[2]);

continue;

}

else if(!strcmp(argv[1],"-c"))

printf("File:%sCharNum:%d\n",argv[2],charcalculate);

else if(!strcmp(argv[1],"-w"))

printf("File:%sWordNum:%d\n",argv[2],wordcalculate);

else if(!strcmp(argv[1],"-l"))

printf("File:%sLineNum:%d\n",argv[2],linecalculate);

else if(!strcmp(argv[1],"exit"))

{

printf("Exit!\n");

break;

}

else

printf("NullPoint\n");

printf("\n\n");

scanf("%s%s%s",argv[0],argv[1],argv[2]);

}

return 0;

}

时间: 2024-08-01 20:19:30

wc程序的相关文章

Wc程序实现

本次我做的项目是一个简单的实现Wc.exe的程序,我在https://wenku.baidu.com/view/30d9ddc4b7360b4c2f3f6402.html这个网址上找了一个简单的源代码,他只是先了-l,-c,-w,的功能,我在此基础上修改了上面的菜单布局,和文件的输入限制这里可以全盘输入.然后我添加了一个可以输出空行,注释行,代码行个数的统计功能就是-a功能,组成了现在这个小型的Wc.exe程序,我将我的程序放在了我的github账户上详细地址为https://github.co

软件工程第二周 WC程序

具体功能要求: 程序处理用户需求的模式: wc.exe[parameter][file_name] 各个参数的意义: 基本功能列表: wc.exe-c file.c:char count wc.exe-w file.c:word count wc.exe-l file.c:line count 1.代码来源: http://www.cnblogs.com/zht01/p/5299719.html 开发平台:windows 开发工具:visual studio 2015 开发语言:c++ bug:

C++ Word Count 发布程序

前段时间,模仿 Linux 系统下的 wc 程序,在 Windows 系统环境下使用 C/C++ 实现了一个相似的 WC 程序,只不过有针对性,针对的是 C/C++,Java 等风格的源代码文件. 此 WC 程序可以统计字符数.单词数(不包括注释)和行数,另外可分别统计空行数.代码行数和注释行数,甚至可以统计同一目录下(包括子目录)的符合后缀名的文件(支持 '*' 通配符). WC 功能最初和 Linux 一样,是在命令提示符窗口下使用的,过后增加了图形化用户界面,可以通过鼠标选择文件,统计选中

基于C#的单元测试(VS2015)

这次来联系怎么用VS2015来进行C#代码的单元测试管理,首先,正好上次写了一个C#的WordCount程序,就用它来进行单元测试联系吧. 首先,根据VS2015的提示,仅支持在共有类或共有方法中支持创建单元测试.所以,如果我们要测试私有或是保护的类和方法,是要先将他们暂时设定成公有类型. 在VS2015中创建单元测试非常简单,只要在我们想测试的地方点击右键,就会出现 “创建单元测试” 选项. 如果发现菜单没有显示,可以参照这篇博客进行设置.http://www.bubuko.com/infod

linuxGrep命令

你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum). $ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RH

重读《C程序设计语言》(2):导言

这一章主要是概要的介绍C语言,通过实际程序引入C语言的基本元素.至于具体细节,后续章节将进一步介绍. (1)学习一门新程序设计语言的唯一途径就是使用它编写程序. /* * Copyright (C) [email protected] */ #include <stdio.h> main() { printf("hello, world\n"); } (2)在UNIX中,要运行上述代码,首先要在某个文件中建立这个程序,并以" .c "作为文件的扩展名.通

七个高效的文本编辑习惯(以Vim为例)

七个高效的文本编辑习惯 如果你花很多时间输入纯文本.写程序或HTML,那么通过高效地使用一个好的编辑器,你可以节省大部分时间.本文将提供指导和提示,让你更迅速地做这些工作,并且少犯错误. 本文用开源文本编辑器Vim(Vi IMproved)来演示如何高效编辑,本文方法同样适用于其他的编辑器.选择合适的编辑器,实际上是进行高效编辑的第一步.我们避免去讨论哪个编辑器最适合你,因为这个话题将占用太多篇幅.如果你不知道选用那个编辑器,或者你对目前使用的编辑器不满意,那就试试Vim:你将不会失望. 第1部

shell教程&lt;入门篇&gt;

由于我平时的工作环境是linux,所以无可避免的经常使用命令行模式和shell脚本,而且有些命令行每天都要输好多遍,比如ssh登录之类的,所以干脆把平时常用的命令都写成脚本文件,所以特意开了一个shell脚本的分类,用来记录学习shell的过程,以便温习. 首先我们从一个简单的脚本来开启shell学习的大门,假设你想要知道当前系统中有多少人登录,可以使用 who 命令来查询: 1 $ who 2 george pts/2 Dec 31 16:39 3 betsy pts/3 Dec 27 11:

现代软件工程讨论第一章-第四章

第一章 1.代码如下 #include <iostream> #include <cstdio> #include <time.h> using namespace std; int main(){ srand(time(0)); while(1){ printf("随机生成的一个小学四则运算题目,除法省去余数\n"); int num1 = rand() % 10; int num2 = rand() % 10; int index = rand(