最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C语言统计文件中的字符数、单词数以及总行数

来源:动视网 责编:小OO 时间:2025-10-01 20:43:00
文档

C语言统计文件中的字符数、单词数以及总行数

C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;每行的字符数不能超过1000。代码如下#include#includeint*getCharNum(char*filename,int*totalNum);intmain(){总行数totalNum[1]:总字符数totalNum[2]:总单词数}/***统计
推荐度:
导读C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;每行的字符数不能超过1000。代码如下#include#includeint*getCharNum(char*filename,int*totalNum);intmain(){总行数totalNum[1]:总字符数totalNum[2]:总单词数}/***统计
C语言统计文件中的字符数、单词数以及总行数

统计文件的字符数、单词数以及总行数,包括:

每行的字符数和单词数

文件的总字符数、总单词数以及总行数

注意:

空白字符(空格和tab缩进)不计入字符总数;

单词以空格为分隔;

不考虑一个单词在两行的情况;

每行的字符数不能超过1000。

代码如下

#include

#include

int *getCharNum(char *filename, int *totalNum);

int main(){

 总行数  totalNum[1]: 总字符数  totalNum[2]: 总单词数

}

/**

 * 统计文件的字符数、单词数、行数

 *

 * @param  filename  文件名

 * @param  totalNum  文件统计数据

 *

 * @return  成功返回统计数据,否则返回NULL

**/

int *getCharNum(char *filename, int *totalNum){

 指向文件的指针

 缓冲区,存储读取到的每行的内容

 缓冲区中实际存储的内容的长度

 当前读到缓冲区的第i个字符

 读取到的字符

 上个字符是否是空格

 当前行的字符数

 当前行的单词数

    printf("line   words  chars\\n");

 每次读取一行数据,保存到buffer,每行最多只能有1000个字符

 遍历缓冲区的内容

 遇到空格

 如果上个字符不是空格,那么单词数加1

 忽略换行符

 如果既不是换行符也不是空格,字符数加1

 如果最后一个字符不是空格,那么单词数加1

 每次换行重置为1

 一行结束,计算总字符数、总单词数、总行数

 总行数

 总字符数

 总单词数

 置零,重新统计下一行

}

在D盘下创建文件demo.txt,并输入如下的内容:

I am Chinese. I love my country.

China has 960 square kilometers of territory.

China has a population of 1.35 billion.

The capital of China is Beijing.

                                By gunge

                                2014-10-12

运行程序,输出结果为:

Input file name: d://demo.txt

line   words  chars

1      7      26

2      7      39

3      7      33

4      6      27

5      0      0

6      2      7

7      0      0

8      1      10

Total: 8 lines, 30 words, 142 chars

上面的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。

fgets()函数用于从文件中读取一行或指定个数的字符,其原型为:

参数说明:

buffer为缓冲区,用来保存读取到的数据。

size为要读取的字符的个数。如果该行字符数大于size-1,则读到 size-1 个字符时结束,并在最后补充' \\0';如果该行字符数小于等于 size-1,则读取所有字符,并在最后补充 '\\0'。即,每次最多读取 size-1 个字符。读取的字符包括换行符。

stream为文件指针。

有的读者问,为什么不使用getc(),每次从文件中读取一个字符,也无需开辟缓冲区。

这样没有问题,但是在处理换行时要注意跨平台问题,因为不同的平台对文本文件换行的处理不一样,Linux以'\\n'为换行符,Windows以'\\n\\r'为换行符,Mac又以'\\r\\n'为换行符。所以,使用getc()函数处理换行时比较麻烦。

这里去繁就简,通过fgets()读取整行数据,然后再处理每个字符,直接忽略'\\n'和'\\r'。

注意:由于每行的结尾会有最多2个字节长度的换行符,fgets()还会添加NUL,所以缓冲区的长度至少为1003,才能容纳每行1000个字符,否则strlen()可能返回垃圾值。

请看代码第43行,打开文件出错时,返回NULL,而不是生硬的exit()。这样可以通知主调函数发生了错误,让主调函数做出适当的处理,或者通知用户,提高软件的用户体验。

 ——C语言中文网

文档

C语言统计文件中的字符数、单词数以及总行数

C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;每行的字符数不能超过1000。代码如下#include#includeint*getCharNum(char*filename,int*totalNum);intmain(){总行数totalNum[1]:总字符数totalNum[2]:总单词数}/***统计
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top