0

ファイルへのパス名を持つファイルがあります:

/my/path1
/my/path11
/my/path12
/my/path13

ファイル構造は、各行に個別のパスがあることです。私がやりたいのは/my/path1、上記のファイル内の文字列またはその他の存在を何度も検索することです

私は2つの方法を考えることができました。

  1. 毎回ファイルの内容を1行ずつ取得し、文字列を検索します。利点は、ファイルのサイズを変更できることと、バッファオーバーフローについて心配する必要がないことです。

  2. 内容をバッファにロードし、バッファを使用して検索します。ただし、ファイルサイズを制御できないため、ここでは注意が必要です。

最善のアプローチは何ですか?私はUNIXで働いています。この目的で使用できるCのビルド内ライブラリコマンドはありますか?awkまたは、Cコードを使用して同じタスクを実行するにはどうすればよいですか。

4

2 に答える 2

1

stdioを使用すると、バッファリングが自動的に行われます。関数setvbufを使用して複数の行をバッファリングすることにより、その動作を変更できます。getline行ごとにチェックするために使用できます。

于 2012-02-09T10:21:39.583 に答える
0

すべてのファイルをメモリにロードするのは良い考えではないと思います。を使用するfgetsstrcmpが最善の方法だと思います。

于 2012-02-09T10:21:53.547 に答える