100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【C程序设计语言第二版】统计字符数 行数以及单词数

【C程序设计语言第二版】统计字符数 行数以及单词数

时间:2022-11-10 05:01:15

相关推荐

【C程序设计语言第二版】统计字符数 行数以及单词数

1.统计字符数

我们可以利用getchar函数,来进行字符的读入,并对读入的字符进行判断。

EOF:文件结束符,这个特殊值常量与任何实际字符都不相同。

这里我们用int类型来接收getchar返回的字符的的原因:为了让变量 c c c能存下EOF这个常量值。

各种数据类型能表示的数值范围由编译器决定。char类型在有些编译器中定义的范围为 0 ∼ 255 0 \sim255 0∼255,另外一些编译器中定义的范围为 − 128 ∼ 127 -128 \sim 127 −128∼127。当编译器中定义的范围为 0 ∼ 255 0 \sim 255 0∼255时,用char接收getchar()返回值时就会出错。数据类型具体的定义范围可在<limits.h>文件中找到。

#include <stdio.h>int main(void){int c;int cnt = 0;while(getchar() != EOF) ++cnt;printf("%d\n", cnt);return 0;}

2.统计行数

我们可以用\n一行的结束,所以代码如下:

#include <stdio.h>int main(void){int c;int cnt = 0;while(((c = getchar()) != EOF)if(c == '\n')++cnt;printf("%d\n", cnt);return 0;}

3.统计单词数

根据观察普通文本,有以下五种情况我们需要考虑:

注:空白字符包括(空格、换行符(\n)、制表符(\t))

读到了一个非空白字符,且后面仍有非空白字符读到了一个非空白字符,且后面为空白字符读到了一个空白字符,后面是一个非空白字符读到了一个空白字符,后面仍然是空白字符读到了文件结束符

根据上述情况,我们对统计单词数程序的具体程序如下:

处理空白字符处理连续非空白字符处理换行符和文件结束符

#include <stdio.h>#define IN 1 /* 在单词内 */#define OUT 0 /* 在单词外 */int main(void){int c, nl, nw, nc, state;state = OUT;nl = nw = nc = 0;while((c = getchar()) != EOF) {++nc;if(c == '\n') ++nl;if(c == ' ' || c == '\n' || c == '\t') state = OUT;else if(state == OUT) {// 从单词外进入单词内就把单词数加一state = IN;++nw;}}printf("单词数:%d, 行数:%d, 字符数:%d\n", nw, nl, nc);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。