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 更好地阅读本文,可点击这里 基本要求 ...
随机推荐
- rabbitmp安装记录
第一次安装一路遇坑,安装步骤及问题如下 1:安装erlang依赖 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel opens ...
- python程序—士兵出击
class Gun: def __init__(self,gun_type): self.gun_type=gun_type self.bullet_count= def add_bullet(sel ...
- AT2412 最大の和
传送门 思路: 线段树暴力枚举区间,查询最大区间和. Code: #include<iostream> #include<cstdio> #include<algorit ...
- Expression基础体验
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...
- grunt,提示node不是内部命令也不是外部命令
昨天配vue环境,把环境变量改错了.今天grunt报错了,百度一下,就好啦. https://blog.csdn.net/qq_37248318/article/details/80839564 这个 ...
- Java开源框架知识整理
1.Spring的了解 Spring是一个轻量级的IOC/DI和AOP容器的开源框架.可以实现Java模块化开发,贯穿表现层,业务层,逻辑层,实现各层之间的解耦合关系. IOC,控制反 ...
- linux命令:使用less从后向前查看日志信息
线上出问题的时候,我们常用tail-n 或者tail-f或者grep或者vicat等各种命令去查看异常信息,但是日志是在不停地刷屏,tail是动态的在变的,我们往往期望从日志最后一行往前一页一页的翻页 ...
- sql 2012 用户sa登陆不上
1.通过Windows身份验证进入服务器 2.点击“安全性”--“登录名”--“sa” 3.右击sa,点击“属性” 4.取消“强制实施密码策略(F)”勾选 5.对密码重新输入 6.点击确定,重新用SQ ...
- 将VMware虚拟机系统镜像导入到ESXi vSphere
原因: 公司有一个VMware虚拟机的交叉编译镜像,但主机性能不行,因此需要将镜像导入ESXi vSphere 过程: 1.将WMware虚拟机克隆; 2.将虚拟机的多个磁盘文件合并成一个;(否则vS ...
- vue v-if控制显隐,页面加载出现闪现 v-cloak
<div id="divApp"> <div v-if="type === 'A'" v-cloak> A </div> & ...