首页
登录 | 注册

word count

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;

}

运行结果如下图:

word count


相关文章

  • Npoi简单读写Excel
    什么是NPOI ? 简而言之,NPOI就是可以在没有Office的情况下对Word或Excel文档进行读写等操作. 使用方式 : 1.准备NPOI的dll文件 下载链接:https://npoi.codeplex.com/releases ...
  • c#开发Android初学(一)
    我也是最近开始学习用c#开发android,最近找在好心网友那里下到了四个android开发安卓的视频(传智的)有想要的朋友可以留下邮箱 废话不多收,分享我最近一个星期的成果. 先看最主要的一个获取数据的方法FindViewById< ...
  • Day2----Python学习之路笔记(2)
    学习路线: Day1 Day2 Day3 Day4 Day5 ...待续 一.简单回顾一下昨天的内容 1. 昨天了解到了一些编码的知识 1.1. 我们写好的.py文件头没有加# -*- coding:utf-8 -*-这样的声明,那么在Wi ...
  • 补习系列(20)-大话 WebSocket 与 &quot;尬聊&quot;的实现
    目录 一.聊聊 WebSocket 二.Stomp 是个什么鬼 三.SpringBoot 整合 WebSocket A. 引入依赖 B. WebSocket 配置 C. 控制器 D. 前端实现 四.参考文档 一.聊聊 WebSocket 从 ...
  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • Android6.0 源码修改之 Contacts应用
    一.Contacts应用的主界面和联系人详情界面增加顶部菜单添加退出按钮 通过Hierarchy View 工具可以发现 主界面对应的类为 PeopleActivity 联系人详情界面对应的类为 QuickContactActivity 左 ...

2020 cecdns.com webmaster#cecdns.com
12 q. 0.077 s.
京ICP备10005923号