WordCount

论坛 期权论坛     
选择匿名的用户   2021-5-26 13:30   102   0
<div class="blogpost-body" id="cnblogs_post_body">
<p><strong>一、开头</strong></p>
<p>(1)合作者:201631107110,201631083416</p>
<p>(2)代码地址:<a href="https://gitee.com/zhaoxiaoqin/WordCount.git">https://gitee.com/zhaoxiaoqin/WordCount.git</a></p>
<p>(3)本次作业链接地址:<a href="https://www.cnblogs.com/zhaoxiaoqin/articles/9824449.html">https://www.cnblogs.com/zhaoxiaoqin/articles/9824449</a></p>
<p><strong>二、正文</strong></p>
<p><strong>1.项目完成情况:</strong></p>
<p><strong>1.1</strong> <strong>基本功能(完成)</strong></p>
<p>wc.exe -c input.c     //返回文件 file.c 的字符数</p>
<p>wc.exe -w  input.c     //返回文件 file.c 的单词总数</p>
<p>wc.exe -l input.c     //返回文件 file.c 的总行数</p>
<p><strong>1.2 扩展功能(未完成)</strong></p>
<p>wc.exe -s            //递归处理目录下符合条件的文件</p>
<p>wc.exe -a  input.c     //返回更复杂的数据(代码行 / 空行 / 注释行)</p>
<p>wc.exe -e stopList.txt  // 停用词表,统计文件单词总数时,不统计该表中的单词</p>
<p>[file_name]: 文件或目录名,可以处理一般通配符</p>
<p><strong>2.实现代码</strong></p>
<p><strong> 2.1 main函数实现参数传递</strong></p>
<div class="cnblogs_code">
  <pre class="blockcode">1 int main(int argc, char* argv[]) {
2     Test(argc, argv);//测试
3     getchar();
4     return 0;
5 }</pre>
</div>
<p><strong>2.2 GetOption函数实现参数解析</strong></p>
<div class="cnblogs_code">
  <div class="cnblogs_code_toolbar">
   <span class="cnblogs_code_copy"><a title="复制代码"><img alt="复制代码" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-48304ba5e6f9fe08f3fa1abda7d326ab.gif"></a></span>
  </div>
  <pre class="blockcode"> 1 int *GetOptions(int argc,char* argv[])
2 {
3     /* 返回0代表参数有错
4      *  1 表示读取字母
5      * 3 表示读取单词
6      *  5 表示读取行数
7      *  它们的和代表所要的功能
8      */
9
10     char* params;
11     for(int i&#61;0;i&lt;argc;i&#43;&#43;)
12     {
13         params &#61; argv[i];
14         if(strcmp(&#34;-c&#34;,params) &#61;&#61; 0)
15         {
16             ret[0] &#43;&#61; 1;
17         }
18         else if(strcmp(&#34;-w&#34;,params) &#61;&#61; 0)
19         {
20             ret[0] &#43;&#61; 3;
21         }
22         else if(strcmp(&#34;-l&#34;,params) &#61;&#61; 0)
23         {
24             ret[0] &#43;&#61; 5;
25         }
26         //启动图形界面,则退出命令行结口
27
28     }
29     if(argc &gt; 3) {
30         params &#61; argv[argc - 2];
31         if (strcmp(&#34;-o&#34;, params) &#61;&#61; 0 &amp;&amp; argv[argc - 1] !&#61; NULL) {
32             result &#61; argv[argc - 1];
33             ret[1] &#61; argc - 3;
34         }
35         else
36         {
37             ret[1]&#61; argc - 1;
38         }
39     }else {
40         ret[1] &#61; argc - 1;
41     }
42     //处理 -o之前缺少输入文件
43     return  ret;
44 }</pre>
  <div class="cnblogs_code_toolbar">
   <span class="cnblogs_code_copy"><a title="复制代码"><img alt="复制代码" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-48304ba5e6f9fe08f3fa1abda7d326ab.gif"></a></span>
  </div>
</div>
<p><strong>2.3 WordCount函数根据解析的参数执行相应操作</strong></p>
<div class="cnblogs_code">
  <div class="cnblogs_code_toolbar">
   <span class="cnblogs_code_copy"><a title="复制代码"><img alt="复制代码" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-48304ba5e6f9fe08f3fa1abda7d326ab.gif"></a></span>
  </div>
  <pre class="blockcode"> 1 void WordCount(int argc,char* argv[])
2 {
3     list &#61; createlist();//创建单词列表
4     char* fileName;
5     if (argc &lt;&#61; 1) {
6         Help();
7         exit(0);
8     }
9     GetOptions(argc,argv);
10     fileName &#61; argv[ret[1]];
11     switch(ret[0])
12     {
13         case 1:
14             ReadChar(fileName);
15             break;
16         case 3:
17             ReadWord(fileName);
18             break;
19         case 5:
20             Readlines(fileName);
21             break;
22         case 4: {
23             ReadChar(fileName);
24             flag &#61; 1;
25             ReadWord(fileName);
26             break;
27         }
28         case 6: {
29             ReadChar(fileName);
30             flag &#61; 1;
31             Readlines(fileName);
32             break;
33         }
34         case 8:{
35             ReadWord(fileName);
36             flag &#61; 1;
37             Readlines(fileName);
38             break;
39         }
40         case 9: {
41             CharWordLine(fileName);
42             break;
43         }
44         default:
45             Help();
46             break;
47     }
48 }</pre>
  <div class="cnblogs_code_toolbar">
   <span class="cnblogs_code_copy"><a title="复制代码"><img alt="复制代码" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-48304ba5e6f9fe08f3fa1abda7d326ab.gif"></a></span>
  </div>
</div>
<p><strong>2.4 ReadChar函数实现对文件的字符统计</strong></p>
<div class="cnblogs_code">
  <div class="cnblogs_code_toolbar">
   <span class="cnblogs_code_copy"><a title="复制代码"><img alt="复制代码" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-48304ba5e6f9fe
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP