如何退出while循环?

时间:2012-12-10 14:38:00

标签: c while-loop

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

如何逃离此while?我曾尝试使用EOF,但它没有用。

3 个答案:

答案 0 :(得分:7)

我认为你的意思是:

int ch;

因为EOF不适合char

此外:

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

你的逻辑是倒退的。

答案 1 :(得分:3)

此:

char ch;

错误,EOF不适合chargetchar()的返回值类型为int,因此此代码应为:

int ch;

另外,正如所指出的那样,你的逻辑是倒退的。它在ch不是EOF时循环播放,因此您只需将其放入while

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

答案 2 :(得分:2)

用while检查。它更简单

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

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

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

    您也可以使用Escape字符或\n字符

  • 进行检查

实施例

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