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 更好地阅读本文,可点击这里 基本要求 ...
随机推荐
- Xgboost GPU 加速
import xgboost as xgb import numpy as np from sklearn.datasets import fetch_covtype from sklearn.mod ...
- IIS简单的反向代理设置
下载IIS扩展 1.URL Rewrite 地址: https://www.iis.net/downloads/microsoft/url-rewrite 2.Application Request ...
- oracle数据库查看和解除死锁
查看死锁: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_ ...
- 爬虫基础之requests模块
1. 爬虫简介 1.1 概述 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 1.2 爬虫的价值 在互 ...
- 10_bash_变量_条件判断及运算_sed_循环
shell编程: 编译器.解释器编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量):变量在使用前,必须事先声明,甚至还需要初始化 事先转换成可执行格式 C/C++.C#.Ja ...
- Mac连接非22端口linux服务器
Mac连接非22端口linux服务器 原文链接:https://www.cnblogs.com/blog5277/p/9507080.html 原文作者:博客园--曲高终和寡 1:ssh连接 打开终端 ...
- Unity外包 UE4外包 项目案例平台开通通知
长年承接Unity外包 UE4外包,大家好,本公司团队已将案例上传至专门的案例官网. 欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.
- Operation not permitted
centos7 下,修改文件夹的权限时,报了这么一个错误.linux 下,此法依然奏效. 错误日志: chmod: changing permissions of '/opt/apps/images/ ...
- linux如何查看所有的用户和组信息?
cat /etc/passwd cat /etc/passwd查看所有的用户信息,详情如下图 [步骤二]cat /etc/passwd|grep 用户名 cat /etc/passwd|grep ...
- HDU 1024 Max Sum Plus Plus(DP的简单优化)
Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To b ...