C程序设计语言 练习1:单词计数

mac2022-06-30  22

1.程序功能

程序用于统计行数、单词数与字符数。这里对单词的定义比较宽松,它是任何其中不包括空格,制表符或换行符的字符序列。

 

2.程序实现

#include <stdio.h> #define IN 1 /*在单词内*/ #define OUT 0 /*在单词外*/ /* 统计输入的行数、单词数、与字符数 */ void main() { 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; --nc; //减去空格和转义字符所占的字符数 ++nw; } } //printf("%d,%d,%d \n",nl,nw,nc); printf("line num is %d \n",nl); printf("word mun is %d \n",nw); printf("char num is %d \n",nc); }

 

3.运行测试

在Ubuntu下使用gcc编译,运行,结果如下:

 

4.注意事项:结束输入

在linux下以什么结束输入呢?

libio.h: # define EOF (-1) 当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF。  int getchar() ; //从标准输入缓冲区读取一个字符,成功返回该字符的ASCII值,出错,返回EOF 那么,如何在键盘输入时,产生EOF呢? 不同的系统方法不同:linux系统下:在输入回车换行后的空行位置,按 ctrl+d 。windows系统下:在输入回车换行后的空行位置,按 ctrl+z,再回车确认。

最新回复(0)