下面是我编写的一个小程序,用于计算从键盘输入空格,换行符或制表符的次数.
但是,我不知道出了什么问题.无论输入多少空格或换行符,我的计数始终为零.
#include <stdio.h>
/*program to count blanks ,tabs and newlines */
int main()
{
int cnt_space=0,cnt_newline=0,cnt_tab=0;
int c;
while(c=getchar()!=EOF)
{
if(c==' ')
{
++cnt_space;
}
if(c=='\n')
{
++cnt_newline;
}
if(c=='\t')
{
++cnt_tab;
}
}
printf("spaces=%d\nnewlines=%d",cnt_space,cnt_newline);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
改变这个
while(c=getchar()!=EOF)
Run Code Online (Sandbox Code Playgroud)
至
while((c=getchar())!=EOF)
Run Code Online (Sandbox Code Playgroud)
这个问题的原因是getchar返回值首先与EOF进行比较,结果为0或1.然后结果值存储在c中.所以它永远不会匹配任何条件.
getchar首先与EOF进行比较的原因是因为!=运算符的优先级高于=运算符.