ホームページ  >  記事  >  バックエンド開発  >  インタラクティブ モードの場合、標準入力ストリーム (stdin) でファイルの終わり (EOF) 信号をシミュレートするにはどうすればよいでしょうか?

インタラクティブ モードの場合、標準入力ストリーム (stdin) でファイルの終わり (EOF) 信号をシミュレートするにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 02:48:29731ブラウズ

How can you simulate an End of File (EOF) signal in the Standard Input stream (stdin) when it's in interactive mode?

標準入力ストリーム (stdin) のファイルの終わり (EOF)

プログラムの入力ソースとして stdin を使用する場合、当然のことながら、ファイルの終わり (EOF) 表示をサポートしているかどうか疑問に思います。標準入力の性質は、その構成方法によって異なります。

ファイルからの入力による標準入力

標準入力がファイルからリダイレクトされる場合、本質的に EOF があります。マークは、通常のファイル ストリームと同様です。これは、ファイルには定義されたエンドポイントがあり、読み取り操作がファイルの終わりに達すると EOF 条件が発生するためです。

コンソールからの標準入力

ただし、対話モードとして知られるコンソールからの stdin 入力には、本質的に EOF インジケーターがありません。これは、コンソール入力は通常、ユーザーが入力した文字の連続的なストリームであるためです。

コンソール モードでの EOF のシミュレート

コンソール モードで EOF をシミュレートするには、プラットフォーム-特定のキーの組み合わせを使用できます:

  • Unix ベースのシステム: Ctrl D
  • Windows システム: Ctrl Z

これらのキーの組み合わせを押すと、プログラムは入力が最後に到達したかのように処理しました。

EOF を標準入力に手動で追加する

前述したように、コンソールからの標準入力は無限ストリームとみなされます。 EOF を手動で追加するには、Ctrl D または Ctrl Z キーの組み合わせを使用して明示的に指定する必要があります。

fread 関数または read 関数を使用した解決策

提供されたコード内fread または read を使用してサンプルを作成すると、ループは EOF に到達するまで無限に継続します。このシナリオで EOF 条件を手動で追加するには、次の方法を使用します。 0) {


}

// Ctrl D または Ctrl Z を押すと、c は -1 になり、EOF
// Read and process data from stdin
if (c == -1) {

}

// Handle EOF condition
このようにすると、ユーザーが EOF の組み合わせを押したときにループを終了でき、それに応じてプログラムが入力の終わりを処理できるようになります。

以上がインタラクティブ モードの場合、標準入力ストリーム (stdin) でファイルの終わり (EOF) 信号をシミュレートするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。