fread() の呼び出しが 0 を返し、ferror() が (EOF に対して) エラーを示している場合、読み取りを再試行しても問題ありませんか、それともファイルを閉じてから再度開いた方がよいでしょうか?
完全にやり直すことはできません -- 入力ファイルが部分的に処理されており、元に戻すことはできません (たとえば、一度にチャンクをソケットに書き込んでいて、既存のプロトコルのために方法がありません)。リモートエンドに「気にしないで、最初からやり直す必要がある」と伝えること)。
ファイルを fclose() および fopen() し、既に処理されたデータを fseek() して、そこから fread() を続行することはできますが、それだけで十分でしょうか?