WordCount:C语言实现

项目地址:https://github.com/m8705/WordCount

 

项目要求

wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。

这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。

 

基本功能列表:(已完成)

wc.exe -c file.c     //返回文件 file.c 的字符数
wc.exe -w file.c    //返回文件 file.c 的词的数目  
wc.exe -l file.c      //返回文件 file.c 的行数

扩展功能:(未完成)
    -s   递归处理目录下符合条件的文件。
    -a   返回更复杂的数据(代码行 / 空行 / 注释行)

高级功能:(未完成)

   -x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

 

PSP

PSP2.1预计耗时实际耗时
总体计划2h1.5h
预计完成10h12h
程序开发8h8h
需求分析0.5h0.2h
设计文档0.5h0.3h
设计复审0.5h0.5h
代码规范0.5h0.5h
具体设计1h1h
具体编码6h6h
代码复审1h2h
程序测试2h2h
程序报告1h1h
测试报告1h1h
计算工作量0.5h0.5h
事后总结2.5h2.5h
总计时间12h13.5h

 

 

解题思路

用C语言Main函数接收参数,对参数进行判断,分别采用不同的方式统计数量即可。

 

代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <ctype.h>
 4 int main(int argc, char *argv[])
 5 {
 6     
 7     /*
 8         printf("main函数收到了%d个参数\n",argc);//第一个参数默认是可执行文件本身,第二个参数开始是接受到的参数
 9         int i;
10         for( i = 0; i < argc; i++ ){
11             printf("%s ",argv[i]);    
12         }
13         printf("\n");
14     */
15 
16     if( argc == 3 ){
17             
18         //打印接受到的参数
19         /*
20             int i;
21             printf("收到的外部参数:");
22             for( i = 1; i < argc; i++ ){
23                 printf("%s ",argv[i]);    
24             }
25             printf("\n");
26         */
27         
28         //尝试读取文件的内容
29         char data;
30         FILE *fp = fopen(argv[2],"r");
31         
32         if(!fp){
33             printf("错误:文件读取失败\n");
34             return -1;
35         }        
36         
37         //对参数进行判断
38         
39         
40         if( !strcmp(argv[1],"-c") ){//字符数
41             char temp;
42             int num = 0;
43             temp = fgetc(fp);
44             while( temp != EOF ){
45                 //putchar(temp);
46                 temp = fgetc(fp);
47                 num++;
48             }
49             printf("该文本文件的字符数为:%d\n",num);
50             
51         }
52         else if( !strcmp(argv[1],"-w") ){//单词数
53             int w = 0;
54             char a = fgetc(fp);
55             while( a != EOF){
56                 if( (a >='a' && a <='z') || ( a >='A' && a <='Z') || ( a >='0' && a <='9') ){
57                     while( (a >='a' && a <='z') || ( a >='A' && a <='Z') || ( a >='0' && a <='9') )
58                         a =fgetc(fp);
59                     w++;
60                     a =fgetc(fp);
61                     
62                 }
63                 else
64                     a =fgetc(fp);
65             }
66             printf("该文本文件的单词数为:%d\n",w);
67             
68         }
69         else if( !strcmp(argv[1],"-l") ){//行数
70             char temp;
71             int num = 1;
72             temp = fgetc(fp);
73             while( temp != EOF ){
74                 
75                 //putchar(temp);
76                 if(temp == '\n'){//字符需要用单引号扩住
77                     num++;
78                 }
79                 temp = fgetc(fp);
80                 
81                 
82             }
83             printf("该文本文件的行数为:%d\n",num);
84     
85         }
86         else{
87             printf("错误:参数超出范围!\n");
88             printf("允许参数:-c,-w,-l\n");
89         }
90         int n=fclose(fp);
91     }
92     else{
93         printf("错误:运行参数必须要3个\n");
94         printf("用法:wc.exe [parameter] [file_name]\n");
95     }
96     system("pause");
97     return 0;
98 }

 

运行结果

小结

通过这个项目,我复习了C语言相关知识,同时增进了自己对软件开发流程的理解

转载于:https://www.cnblogs.com/m870100/p/9648510.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值