一、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.\n" << endl;
return 0;
}
continue;
}
if (argv[i] == d)
{
fq = fopen(argv[++i], "w"); //以文本方式打开文件。
if (fq == NULL) //打开文件出错
{
cout << "Output not found.\n" << endl;
return 0;
}
continue;
}
}
int totalNum[3] = {0, 0, 0};
if(fq==NULL)
{
cout<<"Output not found.\n"<<endl;
return 0;
}
}
2、统计文件的字符数、单词总数、文件的有效行数:
int *getCharNum(int *totalNum){
char buffer[1003]; //缓冲区,存储读取到的每行的内容
int bufferLen; // 缓冲区中实际存储的内容的长度
int i; // 当前读到缓冲区的第i个字符
char c; // 读取到的字符
int isLastBlank = 0; // 上个字符是否是空格
int charNum = 0; // 当前行的字符数
int wordNum = 0; // 当前行的单词数
printf("\n");
// 每次读取一行数据,保存到buffer,每行最多只能有1000个字符
while(fgets(buffer, 1003, fp) != NULL){
bufferLen = strlen(buffer);
// 遍历缓冲区的内容
for(i=0; i<bufferLen; i++){
c = buffer[i];
if( c==' ' || c=='\t'){ // 遇到空格
!isLastBlank && wordNum++; // 如果上个字符不是空格,那么单词数加1
isLastBlank = 1;
}else if(c!='\n'&&c!='\r'){ // 忽略换行符
charNum++; // 如果既不是换行符也不是空格,字符数加1
isLastBlank = 0;
}
}
!isLastBlank && wordNum++; // 如果最后一个字符不是空格,那么单词数加1
isLastBlank = 1; // 每次换行重置为1
// 一行结束,计算总字符数、总单词数、总行数
totalNum[0]++; // 总行数
totalNum[1] += charNum; // 总字符数
totalNum[2] += wordNum; // 总单词数
// printf("%-7d%-7d%d\n", totalNum[0], wordNum, charNum);
// 置零,重新统计下一行
charNum = 0;
wordNum = 0;
}
return totalNum;
}
三、程序运行截图:
提交日志截图:
组员职责分工等:
团队编程
原文地址:https://www.cnblogs.com/suiyuechuagnzaoying/p/11703010.html
时间: 2024-11-01 19:17:43