2016-07-05 4 views
1

私は、バッファにロードされたファイルを持っている場合は、それが未完了であれば、私は最後の行を破棄することができますどのように破棄最後の行が未完了である

私はgetline()ラインを使用してバッファをpoppulatingを考える("\n"で終わっていません)バッファがいっぱいになるまで行単位で変更します。

もっと簡単な方法がありますか?

答えて

1

...バッファに

をロードされたファイルが最後'\n'を検索している:

char *end = strrchr(buffer, '\n'); 
// If \n found 
if (end) { 
    // Insure next char is the null character 
    *(end + 1) = '\0'; 
    } 
} else { 
    buffer[0] = '\0'; 
} 
1

ループの最大長がわかっている場合は、fgetsをループとして使用するとよいでしょう。また、 "それがあれば改行を追加する"ということもあるので、今読んだ行に改行があったかどうかを簡単に確認することができます。

それ以外の場合は、freadを使用してバッファに一括読み込みし、ファイルの最後の部分を読み終えたら、最後の文字が改行であるかどうかを確認します。そうでない場合は、最後の改行を検索し(strrchrはこのための良い関数です)、そこでバッファを終了します。

関連する問題