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 更好地阅读本文,可点击这里 基本要求 ...
随机推荐
- Python内置进制转换函数(实现16进制和ASCII转换)
在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...
- 容器中的诊断与分析3——live diagnosis——lldb
windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg .net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分析呢?今天介 ...
- WebAPI前置知识:HTTP与RestfulAPI
对HTTP协议的基本了解是能理解并使用RestFul风格API的基础,在了解了这些基础之后,使用各种RestFul的开发框架才能得心应手.我一开始使用WebApi的时候就因为对这些知识缺乏了解,觉得用 ...
- web前端面试题 -- 2019最新,最全
最近在找工作,面试了好多家公司,结果都不怎么理想.要么公司环境氛围不行,要么工资达不到理想的薪资.大部分公司对程序员的面试流程几乎都一样,来了先填一份登记表,写一套面试题,然后技术面,人事面.至于有的 ...
- JQ清空select的已选择状态
$('#payment').find("option:selected").attr("selected", false);
- React Native图片缓存解决方案
1. react-native-fetch-blob 将图片存在本地的一个东西 2. react-native-img-cache 自动缓存的一个东西 上面装好后 就可以使用啦 import {Cac ...
- Java问题解决:"错误:编码GBK 的不可映射字符"
参考资料:http://blog.csdn.net/l1028386804/article/details/46583279 场景: 在使用javac编译java文件时出现以下错误: 解决方法: 使用 ...
- loadrunner中使用web_custom_request函数调用webservice接口
1.使用的接口地址: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName 以SOAP ...
- OpenGL.Tutorial03_Matrices_测试
1. 2. // ZC: 工程-->右键-->属性--> 配置属性: // ZC: C/C++ -->常规-->附加包含目录,里面添加: // ZC: E:\OpenGL ...
- 分布式消息通信Kafka-原理分析
本文目标 TopicPartition 消息分发策略 消息消费原理 消息的存储策略 Partition 副本机制 1 关于 Topic 和 Partition 1.1 Topic 在 kafka 中, ...