wc.exe
1 /*
2 * 没能实现的功能:wc.exe -s递归处理目录下符合条件的文件
3 * wc.exe -x 显示图形界面
4 *
5 *
6 * 实现的功能: wc.exe -c显示文件的字符数、
7 * wc.exe -l行数、
8 * wc.exe -w单词、
9 * wc.exe -a空行数、代码行数、注释行数的统计测试
10 *`
11 *
12 */
13
14 #include"iostream"
15 using namespace std;
16 void CharCount(char path[]); //字符统计函数
17 void WordCount(char path[]); //单词统计函数
18 void LineCount(char path[]); //行数统计函数
19 void Muiltiple(char path[]); //综合统计函数,包括代码行,空行,注释行
20 int main()
21 {
22 char input[100],path[50];
23 gets(input);
24 int count=strlen(input);
25 strncpy(path, input + 10, count - 10);
26 path[count - 9] = '\0';
27 //cout << path << endl;
28 int check = 1;
29 while (check)
30 {
31 int i = 7;
32 if ((input[i] == '-') && (input[i + 1] == 'c'))
33 {
34 CharCount(path);
35 break;
36 }
37 if ((input[i] == '-') && (input[i + 1] == 'w'))
38 {
39 WordCount(path);
40 break;
41 }
42 if ((input[i] == '-') && (input[i + 1] == 'l'))
43 {
44 LineCount(path);
45 break;
46 }
47 if ((input[i] == '-') && (input[i + 1] == 'a'))
48 {
49 Muiltiple(path);
50 break;
51 }//获取文件名
52 }
53 system("pause");
54 return 0;
55 }
56 void CharCount(char path[]) //字符统计函数
57 {
58 FILE *fp=NULL;
59 int c = 0;
60 char ch;
61 cout << path<<endl;
62 char *path3 = path;
63 int k = strlen(path);
64 *(path3 + k-1) = '\0';
65 //cout << path3<<endl;
66 if ((fp = fopen(path3 , "r")) == NULL)
67 {
68 printf("file read failure.");
69 exit(0);
70 }
71 ch = fgetc(fp);
72 while (ch != EOF)
73 {
74 c++;
75 ch = fgetc(fp);
76 }
77 cout << "char count is :" << c << endl;
78 c--;
79 fclose(fp);
80 }
81
82 void WordCount(char path[]) //单词统计函数
83 {
84 FILE *fp;
85 int w = 0;
86 char ch;
87 char *path3 = path;
88 int k = strlen(path);
89 *(path3 + k - 1) = '\0';
90 if ((fp = fopen(path3, "r")) == NULL)
91 {
92 printf("file read failure.");
93 exit(0);
94 }
95 //fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾,或出现了错误。
96 ch = fgetc(fp);
97 while (ch != EOF)
98 {
99 if ((ch >= 'a'&&ch <= 'z') || (ch >= 'A'&&ch <= 'Z') || (ch >= '0'&&ch <= '9'))
100 {
101 while ((ch >= 'a'&&ch <= 'z') || (ch >= 'A'&&ch <= 'Z') || (ch >= '0'&&ch <= '9') || ch == '_')
102 {
103 ch = fgetc(fp);
104 }
105 w++;
106 ch = fgetc(fp);
107 }
108 else
109 {
110 ch = fgetc(fp);
111 }
112 }
113 printf("word count is :%d.\n", w);
114 fclose(fp);
115
116 }
117
118 void LineCount(char path[]) //行数统计函数
119 {
120 FILE *fp;
121 int l = 1;
122 char ch;
123 char *path3 = path;
124 int k = strlen(path);
125 *(path3 + k - 1) = '\0';
126 if ((fp = fopen(path3, "r")) == NULL)
127 {
128 printf("file read failure.");
129 exit(0);
130 }
131 //fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾,或出现了错误。
132 ch = fgetc(fp);
133 while (ch != EOF)
134 {
135 if (ch == '\n')
136 {
137 l++;
138 ch = fgetc(fp);
139 }
140 else
141 {
142 ch = fgetc(fp);
143 }
144 }
145 l--;
146 printf("line count is :%d.\n", l);
147 fclose(fp);
148 }
149
150 void Muiltiple(char path[]) //综合统计函数,包括代码行,空行,注释行
151 {
152 FILE *fp;
153 char ch;
154 char *path3 = path;
155 int k = strlen(path);
156 *(path3 + k - 1) = '\0';
157 int c = 0, e = 0, n = 0;
158 if ((fp = fopen(path3, "r")) == NULL)
159 {
160 printf("file read failure.");
161 exit(0);
162 }
163 //fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾,或出现了错误。
164 ch = fgetc(fp);
165 while (ch != EOF)
166 {
167 if (ch == '{' || ch == '}')
168 {
169 e++;
170 ch = fgetc(fp);
171 }
172 else if (ch == '\n')
173 {
174 ch = fgetc(fp);
175 while (ch == '\n')
176 {
177 e++;
178 ch = fgetc(fp);
179 }
180 }
181 else if (ch == '/')
182 {
183 ch = fgetc(fp);
184 if (ch == '/')
185 while (ch != '\n')
186 {
187 ch = fgetc(fp);
188 }
189 n++;
190 ch = fgetc(fp);
191 }
192 else
193 {
194 c++;
195 while (ch != '{'&&ch != '}'&&ch != '\n'&&ch != '/'&&ch != EOF)
196 {
197 ch = fgetc(fp);
198 }
199 }
200
201 }
202 printf("code line count is :%d.\n", c);
203 printf("empt line count is :%d.\n", e);
204 printf("note line count is :%d.\n", n);
205 fclose(fp);
206 }

wc.exe的更多相关文章
- WC.exe【C】
gitee传送门!!!(电脑打不开github,多次尝试未果,决定先用gitee存着先) 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...
- 小白のjava实现wc.exe功能
GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c //返回文件 file. ...
- 模仿WC.exe的功能实现--node.js
Github项目地址:https://github.com/102derLinmenmin/myWc WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要 ...
- 软工作业1—java实现wc.exe
github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数 ...
- 用c语言基本实现wc.exe功能
网址:https://github.com/3216005214/wc.exe wc项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿 ...
- java实现wc.exe
Github地址:https://github.com/ztz1998/wc/tree/master 项目相关要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功 ...
- (第三周)wc.exe—命令行实现对指定目录下文件的操作
一.用户需求 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c ...
- 软工作业No.1。Java实现WC.exe
网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...
- 软件工程 wc.exe 代码统计作业
软件工程 wc.exe 代码统计作业分享 1. Github 项目地址 https://github.com/EdwardLiu-Aurora/WordCount 更好地阅读本文,可点击这里 基本要求 ...
随机推荐
- Docker Swarm Mode 学习笔记 (部署服务)
使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点上执行. 新建服务 docker service create --replicas 3 -p 80:80 ...
- Qt线程—QThread的使用--run和movetoThread的用法
Qt使用线程主要有两种方法: 方法一:继承QThread,重写run()的方法 QThread是一个非常便利的跨平台的对平台原生线程的抽象.启动一个线程是很简单的.让我们看一个简短的代码:生成一个在线 ...
- EF中打印出执行sql语句
不用非得去 SQL Server Profiler 中查看了 方法如下: dbContext.Database.Log+=c=>Console.WriteLine(c)
- python多环境下虚拟环境的搭建和使用
由于开发环境要求,或者实际需要.经常会出现python2.7和python3.x共存下的开发环境问题.虚拟环境的搭建可以很好的隔离Projects的开发环境. 1.首先解决python2.7和pyth ...
- 微观:心流,宏观:ikigai
ikigai: 心流:在心理学中是一种某者在专注进行某行为时所表现的心理状态.如艺术家在创作时所表现的心理状态.某者在此状态时,通常不愿被打扰,即抗拒中断.定义是一种将个人精神力完全投注在某种活动上的 ...
- lua---研究 c-api
c-api 参考手册:http://www.leeon.me/a/lua-c-api-manual
- Unity --- 如何简单的判断图片是否含有 alpha channel
var texImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter; if (texImporter.DoesSourceT ...
- flutter -------- ListView的使用
学习了Flutter,来分享一下学习的一些常用的知识,先来说说ListView 案例效果: ListView是一个类似列的widget,它的内容对于其渲染框太长时会自动提供滚动. ListView 摘 ...
- widerface---VOC
import os, h5py, cv2, sys, shutil import numpy as np from xml.dom.minidom import Document rootdir = ...
- Petrozavodsk Winter Camp, Day 8, 2014, Fine Brochures
1的个数-块的个数+多减的个数+flag 多减的只会在一个循环末尾出现 #include <bits/stdc++.h> using namespace std; #define rep( ...