这段统计单词数量的代码有不理解之处,请指教。
1 #include<stdio.h>2 #include<ctype.h>
3 #include<stdbool.h>
4 #define STOP '|'
5 int main(void)
6 {
7 char c,last;//这个地方分别定义了要输入的字符和停止符前一个字符
8 int n_line=0,n_word=0,p_line=0;//此处定义需要计算的行数、单词数以及不完整行数
9 bool inword=false;//此处书中注释说,“如果字符c在一个单词中,则inword等于true”
我非常不能理解此处为何要将iword设置为false,我尝试设置过 true,并将第15行的!运算符去掉,20行的inword变成!inword。 输出结果只统计了字符数量,而不是单词数量,这是为何?
10 printf("please input your sentence:\n");
11 while((c=getchar())!=STOP)
12 {
13 if(c=='\n')
14 n_line++;
15 if(!isspace(c)&&!inword)
16 {
17 inword=true;
18 n_word++;
19 }
20 if(isspace(c)&&inword)
21 {
22 inword=false;
23 last=c;
24 }
25 }
26 if(last!='\n')
27 p_line=1;
28 printf("words=%d,lines=%d,partial lines=%d",n_word,n_line,p_line);
29 return 0;
30 }