github 的链接
一、模块设计
- 1.处理命令行输入
- 2.统计字符数
- 3.统计单词数
- 4.统计有效行数
- 5.统计词频
- 6.输出词组的大小写判断和转换
- 7.写入统计结果
- 8.Github部分
1、处理命令行输入
int main(int argc, char* argv[])
{
string inputname; //命令行输入处理
string outputname;
string a, b, c, d;
a = "-m";
b = "-n";
c = "-i";
d = "-o";
for (int i = 1; i < argc; i++)
{
if (argv[i] == c)
{
fp = fopen(argv[++i], "r"); //以文本方式打开文件。
if (fp == NULL) //打开文件出错
{
cout << "Input not found.
" << endl;
return 0;
}
continue;
}
if (argv[i] == d)
{
fq = fopen(argv[++i], "w"); //以文本方式打开文件。
if (fq == NULL) //打开文件出错
{
cout << "Output not found.
" << endl;
return 0;
}
continue;
}
}
int totalNum[3] = {0, 0, 0};
if(fq==NULL)
{
cout<<"Output not found.
"<<endl;
return 0;
}
}
2、统计文件的字符数、单词总数、文件的有效行数
- 数组buffer[],用来存储读每行的内容
- bufferLen,存储内容的长度
- charNum,当前行的字符数
- wordNum,当前行的单词数
- totalNum[0],总行数
- totalNum[1],总字符数
- totalNum[2],总单词数
主要思路:每读入一行有效内容,总行数 totalNum[0](初值为0)对应+1。每一行统计结束后,将当前行的字符数、当前行的单词数对应加到总字符数totalNum[1]、总单词数totalNum[2],得到到当前行为止的总字符数、总单词数,再将当前行的字符数charNum、当前行的单词数wordNum重新置为0,为下一行统计做准备。
int *getCharNum(int *totalNum){
char buffer[1003]; //缓冲区,存储读取到的每行的内容
int bufferLen; // 缓冲区中实际存储的内容的长度
int i; // 当前读到缓冲区的第i个字符
char c; // 读取到的字符
int isLastBlank = 0; // 上个字符是否是空格
int charNum = 0; // 当前行的字符数
int wordNum = 0; // 当前行的单词数
printf("
");
// 每次读取一行数据,保存到buffer,每行最多只能有1000个字符
while(fgets(buffer, 1003, fp) != NULL){
bufferLen = strlen(buffer);
// 遍历缓冲区的内容
for(i=0; i<bufferLen; i++){
c = buffer[i];
if( c==' ' || c==' '){ // 遇到空格
!isLastBlank && wordNum++; // 如果上个字符不是空格,那么单词数加1
isLastBlank = 1;
}else if(c!='
'&&c!='
'){ // 忽略换行符
charNum++; // 如果既不是换行符也不是空格,字符数加1
isLastBlank = 0;
}
}
!isLastBlank && wordNum++; // 如果最后一个字符不是空格,那么单词数加1
isLastBlank = 1; // 每次换行重置为1
// 一行结束,计算总字符数、总单词数、总行数
totalNum[0]++; // 总行数
totalNum[1] += charNum; // 总字符数
totalNum[2] += wordNum; // 总单词数
// printf("%-7d%-7d%d
", totalNum[0], wordNum, charNum);
// 置零,重新统计下一行
charNum = 0;
wordNum = 0;
}
return totalNum;
}
二、组员职责分工
成员 | 负责内容 |
---|---|
卢昱妃 | 输入输出+统计字符数、单词总数、有效行数+Github部分 |
蓝飞鹏 | Github部分 |
苏杰隆 | 分工+Github部分 |
黄淑云 | 博客部分 |
林震 | 输入+统计词组及词频部分 |
陈毅东 | 统计词组及词频部分 |
林涛 | 统计词组及词频部分 |
刘新耀 | 统计词组及词频部分 |
三、程序运行截图
四、提交日志截图
附上团队讨论现场图(感谢张栋老师现场拍摄):