EOTとEOFの違い

EOTとEOFの違い

私はEOTがASCIIコード4で、EOFが-1(少なくともCでは)でエンコードされていることを知っています。私はEOFが-1にマッピングされるという事実を見つけるまで、EOTの同義語だと思いました。 EOFがEOTの代わりに-1にマッピングされるのはなぜですか?私が知っている限り、彼らはすべてファイルストリームを終了するのと同じことをします。私が見ることができる唯一の違いは、EOTがbashシェルでもコマンドを終了することです。私はこれら2つのコードの正確な技術的違いを説明したいと思います。

ベストアンサー1

通常、EOFは文字ではありません。足りない文字です。

プログラムがデフォルト設定を使用して標準モード(つまりstdioのみを使用する純粋なCプログラム)の端末で実行されている場合、ASCII文字EOTは表示されません。ターミナルドライバはこの文字を認識し、EOF条件(低レベルではゼロ戻り値read())を生成します。 stdioライブラリは、このEOF条件を関連関数(EOFforのマクロgetchar()、nullポインタfgets()など)に適した戻り値に変換します。

マクロの数値は、Cライブラリを除くEOFどこにも関係なく、EOF条件の意味を理解することには影響しません。

おすすめ記事