c - 为什么它们必须在同一行: (c = getchar()) ! = EOF)

标签 c

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

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

    //do things
}

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

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

解决了问题。
为什么?
我如何调试才能更好地理解这一点?

最佳答案

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

solved the problem

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

试试这个

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

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

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

关于c - 为什么它们必须在同一行: (c = getchar()) ! = EOF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553994/

相关文章:

c - µs-precision wait in C for linux that does not put program to sleep?

凯撒密码

c - 开关/外壳问题

c - 手动遍历c中的数组

c - Windows 7 上的动态加载失败

c++ - 任何为 FUSE 提供常用结构和算法的库

c++ - 可移植网格引擎平台

c - 实时压缩32位RGBA图像数据

c - 按位算术教程

c - C 中的 for/while 循环内存清除