下面是我编写的一个小程序,用于计算从键盘输入空格、换行符或制表符的次数。
但是,我不知道出了什么问题。无论输入多少空格或换行符,我的计数始终为零。
#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;
}
最佳答案
改变这个
while(c=getchar()!=EOF)
到
while((c=getchar())!=EOF)
之所以重要,是因为 getchar 返回值首先与 EOF 进行比较,结果为 0 或 1。然后将结果值存储在 c 中。所以它永远不会匹配任何条件。
之所以先将 getchar 与 EOF 进行比较,是因为 != 运算符的优先级高于 = 运算符。
关于c - 空白计数程序给出不正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264709/