博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编码用命令执行的C语言词语统计程序
阅读量:4661 次
发布时间:2019-06-09

本文共 2713 字,大约阅读时间需要 9 分钟。

需求介绍

程序处理用户需求的模式为:

  • wc.exe [parameter][filename]

在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下:

1、基本功能

  • 支持 -c  统计文件字符数
  • 支持 -w 统计文件单词数
  • 支持 -l  统计文件总行数

2、拓展功能

  • 支持 -a 返回高级选项(代码行 空行 注释行)
  • 支持 -s 递归处理符合条件的文件

3、高级功能

  • 支持 -x 程序以图形界面与用户交互

[filename] 是待处理文件名。

设计历程及感想

  初次看到这个题目,真的是一头雾水,因为以前编译代码都是用编译器直接编译的,而这次要求写一个命令行程序,于是,我找到了度娘,度娘告诉我,main函数的参数

int argc, char* argv[]可以帮到你,通过阅读相关文档,我对其有了大致了解:

argc这个整形数据用来保存后面字符串argv的空间大小,而argv则用来保存命令行的输入数据。

明白了这些,思路顿时打开了,这个题目要求的无非是从命令行向main函数里输入控制参数,从而达到按条件计数的效果

基本功能

  • 支持 -c 统计文件字符数
  • 支持 -w 统计文件单词数
  • 支持 -l  统计文件总行数

 由于时间安排不妥当,导致此次编程周期不长,所以具体功能都没有细化。

#include "stdafx.h"#include "string.h"#include "stdlib.h"void Count(char * file); int Zicount=0;int Wordcount=0;int Hangcount=0;int main(int argc, char* argv[])               //argv[1]保存指令,argv[2]保存文件路径{    FILE *fp;    Count(argv[2]);    while(1)    {        if((fp=fopen(argv[2],"r"))==NULL)        {            printf("该文件不存在!\n\n\n");        scanf("%s%s%s",argv[0],argv[1],argv[2]);        continue;        }        else if(strcmp(argv[1],"-c")==0)                   //统计文件字符数            printf("文件%s字符数为:%d\n",argv[2],Zicount);        else if(strcmp(argv[1],"-w")==0)                   //统计文件单词数            printf("文件%s单词数为:%d\n",argv[2],Wordcount);        else if(strcmp(argv[1],"-l")==0)                  //统计文字总行数            printf("文件%s总行数为%d\n",argv[2],Hangcount);//        else if(strcmp(argv[1],"-a")==0)                   //返回高级选项//            printf("4\n");  //        else if(strcmp(argv[1],"-s")==0)                   //递归处理符合条件的文件//            printf("5\n");        else if(strcmp(argv[1],"exit")==0)        {            printf("程序结束!\n");            break;        }        else             printf("该指令不存在,请重新输入\n");        printf("\n\n");        scanf("%s%s%s",argv[0],argv[1],argv[2]);    }    return 0;        /*    char a[20];    strcpy(a,"haha.txt");    Count(a);    printf("%d\n%d\n%d\n",Zicount,Wordcount,Hangcount);        return 0;        */}void Count(char * file){    FILE * fp;    char a;    if((fp=fopen(file,"r"))==NULL)    {        printf("读文件失败!\n");        exit(-1);    }    while(!feof(fp))    {        a=fgetc(fp);        if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.'&&a!='!'&&a!=';'&&a!='=')            Zicount++;        if(a==' '||a=='\n'||a=='\t'||a==','||a=='.'||a=='!'||a=='='||a==';')        {            if(a=='=')                   //解决==                      Wordcount--;            Wordcount++;        }        if(a=='\n'||a=='\t')            Hangcount++;    }    Zicount--;          //at end of the file,Zicount will add     Hangcount++;        //can't recognize the last line    fclose(fp);}

执行效果:

感想篇

  通过写这个命令行程序,我意识到以前接触的东西实在太少,困在一个小圈子里不敢出去,以后必须去接触更多的东西,切不可坐井观天

转载于:https://www.cnblogs.com/wsndlzl/p/5827947.html

你可能感兴趣的文章
让IE依据HTML头标签选择显示模式
查看>>
ORACLE基本用法
查看>>
实现一个简单的行编辑器
查看>>
开发框架Express
查看>>
[LeetCode#227] Basic Calculator II
查看>>
个人作业收官——软件工程实践总结
查看>>
原生js中大小写转化以及split分割字符串方法
查看>>
生成树相关问题
查看>>
2009-9-17 关于扮猪吃虎
查看>>
外部主机无法访问IIS发布的网站
查看>>
java构造器执行顺序一个有趣的简单实例
查看>>
网络传输数据序列化工具Protostuff
查看>>
捕获程序异常之tryCatch
查看>>
poj3348 Cows 凸包+多边形面积 水题
查看>>
oracle 之 内存—鞭辟近里(二)
查看>>
js 模仿windows 桌面图标排列算法
查看>>
20、SQL Server 数据修改之Update
查看>>
Python学习入门基础教程(learning Python)--3.3.1 Python下的布尔表达式
查看>>
ftp读取txt数据并插入数据库
查看>>
微信开发 调用摄像机拍照(录像)功能
查看>>