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;

は間違ってEOFcharます。getchar()の戻り値の型は であるintため、このコードは次のようになります。

int ch;

また、指摘したように、あなたのロジックは逆です。chis notの間ループEOFするので、次のように入れるだけですwhile

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

しばらく確認してください。もっと簡単です

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

EOFは、ファイルの終わりを示すために使用されます。stdinから文字を読み取っている場合は、次のように入力して、whileループを停止できます。

  • EOF= CTRL+ D(Linuxの場合)

  • EOF= CTRL+ Z(Windowsの場合)

    Escapechracterや\ncharcterでもチェックできます

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