「EOFを送信する」、「EOFを受信した」、「EOF文字」などのフレーズを使用しているように見えるため、これまでの回答を明確にしたいと思います。この回答に対するコメント(感謝)によると、「EOFを送信する」と「EOFを受け取った」というのは正当な用語ですが、文字だとは思わないでください。
EOF は文字ではありません。これは、ストリームが「ファイルの終わり」にある場合、または読み取りエラーが発生した場合に getchar() (または fgetc/getc) が返す値です。これは、getchar() が返す文字値の範囲外の特別な値であり、エラーまたはファイルの終わりの状態を示します。
C 標準では負として定義されていますが、getchar は int に変換された unsigned char として文字を返します。
編集:ここに書いた段落の前に行うべきだった調査を行ったところ、私の仮定のいくつかが完全に間違っていたことに気付きました。これを指摘してくれたコメンターに感謝します。
ストリーム (stdin など) がファイルの終わりの状態になると、この状態は clearerr() で再びクリアでき、getchar() は stdin からさらにデータを読み取ることができます。