web-dev-qa-db-ja.com

C:EOFをシミュレートする方法は?

現在、KRの本を読んで、最初のセクションの例を入力していますが、次のような例がいくつかあります。

while((c = getchar()) != EOF) {
    //do something
}

これらの例をWindowsボックスでテストしているため、cmdプロンプトからコンパイル済みのexeファイルを実行しています。

上記の例をテストするには、どのようにEOFをシミュレートしますか?つまり、基本的に、コマンドプロンプトから例をテストするときにループを停止するにはどうすればよいですか?

50
Andreas Grech

EOFを入力するには、次を使用します。

  1. ^ Z(CtrlZ)Windowsの場合
  2. Unixライクシステムの^ D
88
Greg Hewgill

参照 [〜#〜] eof [〜#〜]

Windows: Ctrl+Z
Unix :Ctrl+D
21
aJ.

最初に:Ctrl ^ X、次に:Ctrl ^ Dを押します

2
user3078185

Int変数に-1の値を明示的に指定することにより、EOFをシミュレートすることもできます。

より明確にするためにこのコードをチェックしてください:

#include<stdio.h>

int main() {    
    // char ch=getchar()
    // int ch=-1;

    if(ch==EOF) { printf("\nEOF: %d",EOF); }
    if((ch!=EOF)==0) { printf("\nit is equal to 0"); }
    if((ch!=EOF)==1) { printf("\nit is equal to 1"); }
    else { printf("\n it is equal to other value"); }
    system("pause");
    return 0;
}
1
Shivam Agarwal