为什么我的 CMD 在我为此特定练习执行 C 代码时打印 [?]

  • 本文关键字:代码 执行 打印 CMD 练习 c
  • 更新时间 :
  • 英文 :


我正在从K&R编程书中学习C,我的很多代码对于大多数练习来说都很好。除了这个特殊的练习,当我在 Windows 10 上通过 CMD 执行它时,在我输入字符并按回车键后,结果是一个带有 0101 的框。[?].

练习 1-9

示例:执行代码后,我将在cmd行中输入"hello"作为输入,一旦我按回车键,结果就是.

我感谢所有的回答,非常感谢。

编辑:

    #include <stdio.h>
main(void)
{
int c;
while((c = getchar() != EOF)) {
    if (c == ' ') /* find a blank */
    {
        putchar(' '); /* print the first blank */
        while((c = getchar()) == ' ')
            ;
    }
    if (c != EOF) /*print normal character */
        putchar(c);
    }
}

还有一些信息:使用 GCC 和记事本++

问题是这一行:

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

它应该是:

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

使用您的版本,您实际上将 getchar() != EOF 的值分配给 c 。这通常是1,除非达到EOF,在这种情况下,它将0

这是一个运算符优先级问题。

表达式 c = getchar() != EOF 等于 c = (getchar() != EOF) 。 即您将getchar() != EOF的结果分配给变量 c 。在此之后c将是 10 .

需要考虑你拥有的那些额外的括号,以及把它们放在哪里。

最新更新