为什么他们必须在同一条线上:(c = getchar())!= EOF)

时间:2015-02-17 03:05:44

标签: c

我不明白 我尝试编写一个程序来消除空格:

int c;
c = getchar();
while (c!= EOF) {

    //do things
}

上面的代码导致很多第一个输入字符输出到屏幕, 但

while ((c = getchar()) != EOF)

解决了这个问题 为什么呢?
如何调试以更好地理解这一点?

1 个答案:

答案 0 :(得分:0)

while ((c = getchar()) != EOF)
     

解决了问题

  • 因为您在每次迭代时都在调用getchar(),而在第一个代码中您不是。

试试这个

#include <ctype.h>
#include <stdio.h>

void removeSpaces()
{
    do {
        chr = getchar();
    } while ((chr != EOF) && (isspace(chr) != 0));
}

然后只要你想删除空格就调用removeSpaces()