C Primer Plus程序清单7.7中inword判读字符是否在单词中有关问题求大神帮助

C Primer Plus程序清单7.7中inword判读字符是否在单词中问题求大神帮助
我是个新手,零基础,最近在自学C Primer Plus,遇到关于使用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;


1.bool inword=false;//如果c 在一个单词中,则inword等于true
这个赋值无法理解,inword怎么判断的字符是不是在一个单词中呢?
比如 isspace(c),如果c是空字符结果为真反之为假,这种书中讲到过的有明确定义的我能理解,inword怎么实现判断的呢?
2.书中说inword定义为标志,在百度上有人说这是标志变量,不懂这是什么意思,一直在看书,只看到有标识符,有系统保留关键字,标志是个什么概 念呢?怎么在书上没有学到?找了书中所有章节也没有关于这种概念的解释,求大神帮助。
各位大神们是我需要学习哪些知识才能掌握类似inword这种概念及用法?书中怎么没有?
------解决思路----------------------
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;          //保存字符数
}
这一部分只是逐个输入字符,进行isspace(是否是空格来判断一个单词的结束)、行数等的判断,没有哪个字符是否在单词中的判断;
printf("characters=%ld,words=%d,lines=%d.",n_chars,n_words,p_lines);
printf("partial lines=%d\n",p_lines);看输出,就知道这段程序只判断字符、单词数、与两种行数而已。
整个程序没有判断某个字符是否在单词中的功能
------解决思路----------------------
至于标志,那简单,要是空格if(isspace(c)&&inword),就把bool变量设为假,表示一个单词结束;接着判断,如果不是空格(是字符),if(!isspace(c)&&!inword),就重新设为真,这时单词数加1,例如输入abc+空格,这时表示单词数为1,输入abc+空格+cdf+空格,单词数为2,一直这样下去。