需求介绍

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

  • 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);
}

执行效果:

感想篇

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

编码用命令执行的C语言词语统计程序的更多相关文章

  1. 编码用命令行执行的C语言词语统计程序

    需求介绍 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c   ...

  2. [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  3. 转:Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  4. [fw]Linux系统使用time计算命令执行的时间

    Linux系统使用time计算命令执行的时间 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的.所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗.例 ...

  5. R语言如何将字符串转变为命令执行

    这里用到 eval() 和 parse() 函数.首先使用 parse() 函数将字符串转化为表达式(expression),而后使用 eval() 函数对表达式求解.x <- 1:10a &l ...

  6. (大数据工程师学习路径)第一步 Linux 基础入门----命令执行顺序控制与管道

    介绍 顺序执行.选择执行.管道.cut 命令.grep 命令.wc 命令.sort 命令等,高效率使用 Linux 的技巧. 一.命令执行顺序的控制 1.顺序执行多条命令 通常情况下,我们每次只能在终 ...

  7. 【技巧总结】Penetration Test Engineer[3]-Web-Security(SQL注入、XXS、代码注入、命令执行、变量覆盖、XSS)

    3.Web安全基础 3.1.HTTP协议 1)TCP/IP协议-HTTP 应用层:HTTP.FTP.TELNET.DNS.POP3 传输层:TCP.UDP 网络层:IP.ICMP.ARP 2)常用方法 ...

  8. Bash脚本编程之变量与多命令执行

    变量基础知识 程序由指令加数据所组成,而变量可以理解为数据来源的一种. 变量名可以理解为指向了某个内存空间的地址,对于变量的赋值可理解为向内存空间写入数据,对于变量的引用可理解为从内存空间读取数据. ...

  9. [WEB安全]代码/命令执行总结

    0x01 代码执行 1.1 概念 远程代码执行实际上是调用服务器网站代码进行执行. 1.2 常见执行方法 eval eval():将字符串当做函数进行执行(需要传入一个完整的语句) demo: < ...

随机推荐

  1. iosclient发现_世界杯送流量活动项目总结

       世界杯如火如荼的进行.视频站点相似于门户站点.须要高速依据外部环境更新内容. 产品经理须要策划活动,并安排实施.这个活动就是在这样背景下产生的,爱奇艺与运营商合作,实现双赢.爱奇艺能够通过运营商 ...

  2. Concurrent包学习之 BlockingQueue源码学习

    上一篇学习了ExecutorService和其它相关类的源码,本篇要学习的BlockingQueue中的源码,as always,先上类图 其实继承(实现)的层次比较简单,我们只要需要先学习一下Blo ...

  3. Jenkins忘记密码解决办法

    1.进入 如果安装的war包,路劲如下: C:\Users\LENOVO\.jenkins\ 2.打开config.xml  ->将useSecurity设置为false 3.进入系统管理的管理 ...

  4. <数据结构与算法分析>读书笔记--利用Java5泛型实现泛型构件

    一.简单的泛型类和接口 当指定一个泛型类时,类的声明则包括一个或多个类型参数,这些参数被放入在类名后面的一对尖括号内. 示例一: package cn.generic.example; public ...

  5. grunt项目构建工具

    JS项目构建工具Grunt实践 一:下面来介绍下如何用grunt合并,压缩js文件.    大概步骤有如下:     1. 新建文件夹相对应的项目 比如文件名叫:gruntJs      2. 新建文 ...

  6. Win7系统的任务管理器显示不全

    Win7系统的任务管理器显示不全:如下图所示 首先要说明的是:出现这种现象是正常的,因为这种样式是任务管理器的精简模式. 还原方法:双击任务管理器四周的空白边框,即可恢复初始模式. 效果图如下:

  7. HDU 1269 迷宫城堡(判断有向图强连通分量的个数,tarjan算法)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  8. iOS11 Xcode 9 按住command 单击 恢复到从前(直接跳转到定义)

    iOS11 Xcode 9  按住command 单击 恢复到从前(直接跳转到定义)   2017年9月20日,苹果如期推送 Xcode 9 和 iOS 11的更新. Xcode 9正式版与之前bet ...

  9. Jquery属性练习

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  10. 【js】某字符串多次替换

    eg:  var str="icon icon-1chkedchkedchked"; var strNew=str.replace(new RegExp("chked&q ...