//wordcnt.c 统计字符,单词和行
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h>
#define STOP '|'
int main(void)
{
char c;
char prev;
long 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,n_lines);
printf("partial lines = %d\n",p_lines);
return 0;
}
程序运行示例:
enter text to be analyzed(| to terminate):
Reason is a
powerful servant but
an inadequate master.
|
characters=55,words=9,lines=3,partial lines=0
以上是程序。
有个疑问
![](http://imgsrc.baidu.com/forum/w%3D580/sign=7697ff1eef24b899de3c79305e071d59/3475d42a2834349b5d94bb9bcfea15ce37d3bef2.jpg)
![](http://imgsrc.baidu.com/forum/w%3D580/sign=3e327f13fedcd100cd9cf829428a47be/be9b79310a55b319ee31576b45a98226cefc17bf.jpg)
这个inword定义了false 后面没有改变它的值。
那么!inword不是一直不能判断成立。
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h>
#define STOP '|'
int main(void)
{
char c;
char prev;
long 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,n_lines);
printf("partial lines = %d\n",p_lines);
return 0;
}
程序运行示例:
enter text to be analyzed(| to terminate):
Reason is a
powerful servant but
an inadequate master.
|
characters=55,words=9,lines=3,partial lines=0
以上是程序。
有个疑问
![](http://imgsrc.baidu.com/forum/w%3D580/sign=7697ff1eef24b899de3c79305e071d59/3475d42a2834349b5d94bb9bcfea15ce37d3bef2.jpg)
![](http://imgsrc.baidu.com/forum/w%3D580/sign=3e327f13fedcd100cd9cf829428a47be/be9b79310a55b319ee31576b45a98226cefc17bf.jpg)
这个inword定义了false 后面没有改变它的值。
那么!inword不是一直不能判断成立。