一.用户需求
程序处理用户需求的模式为:
- wc.exe [parameter][filename]
在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下:
1、基本功能
- 支持 -c 统计文件字符数
- 支持 -w 统计文件单词数
- 支持 -l 统计文件总行数
2、拓展功能
- 支持 -a 返回高级选项(代码行 空行 注释行)
- 支持 -s 递归处理符合条件的文件
二.功能实现
为了增加程序的可读性,我对各项功能进行了模块化。共写了六个子函数。其中void charcount(FILE *fp)用于统计文件中字符的数量,void wordcount(FILE *fp)用于统计文件中单词的数量,void linecount(FILE *fp)用于统计文件的行数,void mixline(FILE *fp)实现统计文件中的代码行,注释行,空行的数量,void multi_file(char *path,char *func)用于处理文件目录下的多个文件void filesearch(char *path, int layer,char *func,char *q)递归处理目录下符合条件的文件。首先应当把用户输入的字符串读到数组string[100]中,然后对字符串进行处理,分离出功能选项和文件路径。然后分别存储在function[20]和file[100]中,使用for循环结构以及switch分支语句对用户要求的各项功能进行实现。
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <io.h> void charcount(FILE *fp); //统计文件中的字符数量 void wordcount(FILE *fp); //统计文件中的单词数量 void linecount(FILE *fp); //统计文件行数 void mixline(FILE *fp); //统计文件中的代码行,注释行,空行的数量 void multi_file(char *path,char *func); //处理文件目录下的多个文件 void filesearch(char *path, int layer,char *func,char *q); //递归处理目录下符合条件的文件 int main() { int i,j,flag=0; FILE *fp; char file[100],string[200],function[20]; while(1) { if(flag==1) printf(" "); printf("wc.exe "); flag=1; gets(string); for(i=0,j=0;string[i]!='