欢迎来到天天文库
浏览记录
ID:33844157
大小:56.49 KB
页数:3页
时间:2019-03-01
《c语言统计文件中的字符数、单词数以及总行数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言统计文件中的字符数.单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;限制每行的字符数不能超过1000o代码如下ttinclude#includeint*getCharNum(char*filename,int*totalNum);intmain(){charfilename[30];//tota
2、lNum[0]:总行数totalNum[l]:总字符数totalNum[2]:总单词数inttotalNum[3]={0,0,0};printf(Hlnputfilename:H);scanf("%s",filename);if(getCharNum(filename,totalNum)){printf("Total:%dlines,%dwords,%dchars",totalNumfO],totalNum[2],totalNum[l]);}else{pnntf("Error!");}r
3、eturn0;}/***统计文件的字符数、单词数、行数**@paramfilename文件名*@paramtotalNum文件统计数据**@return成功返冋统计数据,否则返冋NULL**/int*getCharNum(char*filename,int*totalNum){FILE*fp;〃指向文件的指针charbuffer[1003];〃缓冲区,存储读取到的每行的内容intbufferLen;//缓冲区中实际存储的内容的长度inti;//当前读到缓冲区的第i个字符charc;〃读取到的字符
4、intisLastBlank=0;//」:个字符是否是空格intcharNum=0;//当前行的字符数intwordNum=0;//当前行的单词数iff(fp=fopen(filename,"rb"))==NULL){perror(filename);returnNULL;}printf("linewordschars");〃每次读取一行数据,保存到buffer,每行最多只能有1000个字符while(fgets(bufferz1003,fp)!=NULL){bufferLen二strlen
5、(buffer);//遍历缓冲区的内容for(i=0;i6、,那么单词数加1isLastBlank=1;//每次换行重置为1//一行结束,计算总字符数、总单词数、总行数totalNum[0]卄;〃总行数totalNum[l]+=charNum;〃总字符数totalNum[2]+=wordNum;//总单词数printf("%-7d%-7d%d",totalNum[0],wordNum,charNum);//置零,重新统计下一行charNum=0;wordNum=0;}returntotalNum;}在D盘下创建文件demo.txt,并输入如下的内容:7、IamChinese.Tlovemycountry.Chinahas960squarekilometersofterritory.Chinahasapopulationof1.35billion.ThecapitalofChinaisBeijing.Bygunge2014-10-12运行程序,输岀结果为:Inputfilename:d://demo.txtlinewordschars17262739373346275006277008110Total:8lines,30words,142char8、s上而的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。fgetsO®数用于从文件屮读叹一行或指定个数的字符,其原型为:char*fgets(char*buffer,intsize,FILE*stream);参数说明:buffer为缓冲区,用来保存读取到的数据。size为要读取的字符的个数。如果该行字符数大于size-1,则读到size-1个字符时结束,并在最后补充' 】如果该行字符数小于等于size-1,则读収所有字符,并在最后补充、0幕即,每次
6、,那么单词数加1isLastBlank=1;//每次换行重置为1//一行结束,计算总字符数、总单词数、总行数totalNum[0]卄;〃总行数totalNum[l]+=charNum;〃总字符数totalNum[2]+=wordNum;//总单词数printf("%-7d%-7d%d",totalNum[0],wordNum,charNum);//置零,重新统计下一行charNum=0;wordNum=0;}returntotalNum;}在D盘下创建文件demo.txt,并输入如下的内容:
7、IamChinese.Tlovemycountry.Chinahas960squarekilometersofterritory.Chinahasapopulationof1.35billion.ThecapitalofChinaisBeijing.Bygunge2014-10-12运行程序,输岀结果为:Inputfilename:d://demo.txtlinewordschars17262739373346275006277008110Total:8lines,30words,142char
8、s上而的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。fgetsO®数用于从文件屮读叹一行或指定个数的字符,其原型为:char*fgets(char*buffer,intsize,FILE*stream);参数说明:buffer为缓冲区,用来保存读取到的数据。size为要读取的字符的个数。如果该行字符数大于size-1,则读到size-1个字符时结束,并在最后补充' 】如果该行字符数小于等于size-1,则读収所有字符,并在最后补充、0幕即,每次
此文档下载收益归作者所有