4
#include <stdio.h>
main(void) {
   char ch;
   while (1) {   
      if ((ch = getchar()) != EOF) 
      {
         break;
      }
      putchar(ch);
   }
   return 0;
}

我该如何逃脱while呢?我曾尝试使用 EOF,但它没有用。

4

3 回答 3

7

我想你的意思是:

int ch;

因为EOF不适合char.

还:

if ((ch=getchar()) == EOF)
       break;

你的逻辑是倒退的。

于 2012-12-10T14:39:26.060 回答
3

这个:

char ch;

错了,EOF不适合chargetchar()的返回值的类型是int这样的,这段代码应该是:

int ch;

此外,正如所指出的,您的逻辑是倒退的。它循环 while chis not EOF,所以你可以把它放在while

while((ch = getchar()) != EOF)
于 2012-12-10T14:51:49.020 回答
2

检查一下。它更简单

while((ch=getchar())!= EOF) {
     putchar(ch);
}

EOF 用于指示文件的结束。如果您正在从标准输入读取字符,您可以通过输入以下内容来停止此 while 循环:

  • EOF= CTRL+ D(对于 Linux)

  • EOF= CTRL+ Z(对于 Windows)

    您也可以使用Escape字符或\n字符进行检查

例子

while((ch=getchar()) != 0x1b) { // 0x1b is the ascii of ESC
     putchar(ch);
}
于 2012-12-10T14:49:10.823 回答