如何退出while循环?

#include  main(void) { char ch; while (1) { if ((ch = getchar()) != EOF) { break; } putchar(ch); } return 0; } 

我怎么逃避呢? 我曾尝试使用EOF,但它没有用。

我想你的意思是:

 int ch; 

因为EOF不适合char

也:

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

你的逻辑是倒退的。

这个:

 char ch; 

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

 int ch; 

另外,正如所指出的那样,你的逻辑是倒退的。 它循环而ch不是EOF ,所以你可以把它放在while

 while((ch = getchar()) != EOF) 

与时间检查。 这更简单

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

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

  • EOF = CTRL + D (适用于Linux)
  • EOF = CTRL + Z (适用于Windows)

    您也可以使用Escape chracter或\n charcter进行检查

 while((ch=getchar()) != 0x1b) { // 0x1b is the ascii of ESC putchar(ch); }