首页 > 代码库 > 编码用命令执行的C语言词语统计程序
编码用命令执行的C语言词语统计程序
需求介绍
程序处理用户需求的模式为:
- 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语言词语统计程序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。