一応作ってみました。
引数に相対パスか絶対パスを入力して実行してみてください。
とりあえず機能としては最低限の、
すべての行を表示 l or L
セーブして終了 e or E
を入れてみました。

すべての行を表示プログラムが、かなりごちゃごちゃになってしまったので
ソースを見て分からないところは気軽に聞いてください。

一番困ったのが
例えば
new(\n)←通常は改行記号は見えない
(\n)
old(\n)


new(\n)
(\n)
old

では扱いかたが異なることです。
ファイルの最後を示すEOFの位置が異なることにより生じるものだと思います。(確証はなし)
詳しく述べると、実際ファイルは
new(\n)(\n)old(\n)EOFとなっていると思われます。(想像)
fgets関数は改行記号(\n)、もしくはEOFにあたるまでを読み込むので(感覚的には行単位で読み込む)
上で述べた違いというのは最後に読み込むのがEOFのみかoldEOFの違いではないかと思われます。
feof関数はこのファイルが最後まで読み込まれたかを判定する関数ですが、
これはおそらくEOFがfgetsやfgetcなどで読み込まれた時点で、0以外(つまり終了)の値を
返すのだと思います。

ほとんど実際エラーを対処して、かつ眠いときに気がついた感覚論なので誤りがある可能性が高いです。
間違ってる場合は指摘してください。

武井

6/21 コマンドを取得するためのgets関数をfgets関数に変更
最終更新:2007年06月21日 18:04