1 #include<iostream>
2 #include<fstream>
3 #include<string>
4 #include<Windows.h>
5 using namespace std;
6 void main()
7 {
8 char word[150][15];
9 int AllChar = 0, NoteSize = 0, Row = 1, WordSize = 0;
10 char a[15], c, file[15];
11 int i = 0, j = 0;
12 FILE *fp;
13 cout << "#结束输入" << endl;
14 cin >> file;
15 while (1)
16 {
17 if (file[0] == '#')
18 break;
19 fp = fopen(file, "r");
20 if (fp == NULL)
21 {
22 cout << "the file:y.txt not found!" << endl;
23 exit(-1);
24 }
25 c = fgetc(fp);
26 AllChar++;
27 if (c == '/')
28 {
29 c = fgetc(fp);
30 AllChar++;
31 if (c == '/')
32 NoteSize++;
33 }
34 c = fgetc(fp);
35 AllChar++;
36 while (c != EOF)
37 {
38 if ((c >= 'a'&&c <= 'z') || (c >= 'A') && (c <= 'Z'))
39 {
40 a[i] = c;
41 c = fgetc(fp);
42 AllChar++;
43 i++;
44 continue;
45 }
46 else if (c == '/')
47 {
48 c = fgetc(fp);
49 AllChar++;
50 if (c == '/')
51 {
52 c = fgetc(fp);
53 AllChar++;
54 NoteSize++;
55 continue;
56 }
57 }
58 else
59 {
60 if (c == '\n')
61 {
62 Row++;
63 }
64 if (i != 0)
65 {
66 a[i] = '\0';
67 strcpy_s(word[j], a);
68 j++;
69 i = 0;
70 }
71 c = fgetc(fp);
72 AllChar++;
73 }
74 }
75 if (i != 0)
76 {
77 a[i] = '\0';
78 strcpy_s(word[j], a);
79 j++;
80 }
81 fclose(fp);
82 WordSize = j;
83 cout << "行数:" << Row << endl;
84 cout << "字符数:" << AllChar << endl;
85 cout << "单词数:" << WordSize << endl;
86 cout << "注释行:" << NoteSize << endl;
87 cin >> file;
88 }
89 }
项目要求
1.统计文本文件的字符数、单词数和行数
2.要求写一个命令行程序,模仿已有的wc.exe的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数
3.扩展功能为统计注释行数。
4.可以统计多个文件,文件名称由用户输入。
这次作业是统计一个文件中有多少单词,字符和有多少行,之前C++学的不是很好,所以这次为了加强自己C++语言的运用,所以用C++进行编程设计
我提前在D盘里准备了一个记事本a,通过程序显示出记事本a里有的单词数,字符数和行数
除了单词字母算字符外,所有的符号、空格,包括回车都要算到字符数里
因为VS2013里没有“fopen”的定义,所以需要进行宏定义,点开“项目”、“属性”
在预处理器定义中写入_CRT_SECURE_NO_WARINGS,宏定义成功,就能运行程序了
程序运行截图
输入记事本的路径,以回车结束,就会显示结果
第一次配置git,然后上传到coding里,配置很麻烦,但在同学的帮助下成功上传,自己上传还不是很熟,相信通过多次软件工程作业,我会很熟练的运用git上传程序