C Primer Plus程序清单7.7中inword标志变量求助
Mr丶纪 2014-12-09 01:36:52 我是个新手,在自学C Primer Plus时在程序清单7.7中遇到理解不透的问题
1.bool inword=false;//如果c 在一个单词中,则inword等于true
这个赋值无法理解,inword怎么判断的字符是不是在一个单词中呢?
比如 isspace(c),如果c是空字符结果为真反之为假,这种书中讲到过的有明确定义的我能理解,inword怎么实现的呢?
2.在百度上有人说这是标志变量,不懂这是什么意思,一直在看书,只看到有标识符,有系统保留关键字,标志变量是个什么概 念呢?怎么在书上没有学到?找了书中所有章节也没有关于这种概念的解释,求大神帮助。
3.prev='\n';这个已经赋值了,为什么后来还要prev=c?
各位大神们是我错过了什么章节吗?需要学习哪些知识才能掌握类似inword这种概念及用法?
程序清单7.7
// wordcnt.c -- 统计字符、单词和行
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h>
#define STOP '|'
int main(void)
{
char c; //读入字符
char prev; //前一个读入字符
int n_chars=0L; //字符数
int n_lines=0; //行数
int n_words=0; //单词数
int p_lines=0; //不完整的行数
bool inword=false;//如果c 在一个单词中,则inword等于true
printf("Enter text to be analyzed(| to terminate):\n");
prev='\n'; //用于识别完整的行
while((c=getchar())!=STOP)
{
n_chars++;
if(c=='\n')
n_lines++; //统计行
if(!isspace(c)&&!inword)
{
inword=true//开始一个新单词
n_words++;
}
if(isspace(c)&&inword)
inword=false;//到达单词的尾部
prev=c; //保存字符数
}
if(prev!='\n')
p_lines=1;
printf("characters=%ld,words=%d,lines=%d.",n_chars,n_words,p_lines);
printf("partial lines=%d\n",p_lines);
return 0;
}