课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565
【项目7(必看但选做)- 用程序玩转文字】互联网时代,文字的处理显得比任何时候都重重要例如,想想搜索引擎在做什么工作。用们用惯了集成开发环境,例如VC++6.0,它帮我们处理源程序,实际上就是处理由代码行构成的字符串。本项目的几个问题作为引子,请同学们初步体会相关问题的处理办法。请不要因为一时做不出而焦急,可以在寒假完成,但体验,必须进行下去。
1、读入文本文件,统计其中出现的单词数目。
提示:请将统计一行中有多少单词用一个函数实现(见项目2之④的int wordnum(char str[])函数),以使程序结构更加清晰。
参考解答:
//本程序统计文件中的单词数 #include <iostream> #include <fstream> int wordnum(char str[]); using namespace std; int main() { ifstream sourceFile; char ch[100]; int num_word=0; sourceFile.open("a.txt", ios::in); if(!sourceFile) //测试是否成功打开 { cerr<<"input file open error!"<<endl; exit(1); } while (!sourceFile.eof()) //一篇文章由多行构成 { //通过循环读取多行,累加每一行的单词数 sourceFile.getline(ch,100,'\n'); num_word+=wordnum(ch); } sourceFile.close(); cout << "文件中共有" <<num_word<<"个单词。"<<endl; return 0; } int wordnum(char str[]) { int i,num=0,word=0; for(i=0;(str[i]!='\0');i++) { if (str[i]==' ') word=0; //word为0代表当前不构成一个词(遇到空格当然不是词了) else if (word==0) //此处word为0,说明前面读到的是空格,而现在读到的又不是空格,新词开始 { word=1; num++; //新词,故计数 } //这儿不必else了,如果要,无非就是令word=1,因为读第一个非空格时已经是1了,不必要再赋值 } return num; }
时间: 2024-10-19 00:23:54