0

ファイルを読み取り、一致した 2 つのパターン間の行を出力するためのロジックとコードを探しています。両方のパターンが 1 つの行にある場合もあれば、次の連続した行にある場合もあります。または、最初のパターンが行番号 "n" に表示され、2 番目のパターンが行番号 "m" に表示されるか、2 番目のパターンが行番号 "n" に表示され、最初のパターンが行に表示されます。数「m」。

達成する1つの方法は、ファイルを読み取り、最初のパターンが一致し、他のパターンが一致する行番号を記録する2つのint変数を追跡することです。たとえば、変数 x、y。x は最初のパターンの行番号を記録し、y は 2 番目のパターンの行番号を記録し、ファイルを閉じます。次に、x=y または x> y または x < y の状態をチェックし、その再読み込みファイルに基づいて、x と y または y と x の間の行を出力します。ファイルを閉じる前に再読み込みできるかどうかわかりませんか?

もう 1 つの方法は、if 条件を (string compare(pattern1 with current line) || string compare (patter2 with current line) && (string compare(pattern1 with current line) || string compare (patter2 with current line))... で書くことです。これが機能するかどうかわからないので、C プログラミングでそれを達成する方法についてのフィードバックや指針が必要です。

4

1 に答える 1

0

変数を使用した最初のアプローチを使用して、各パターンが一致するファイル内の位置を追跡し、一致が見つかったときfpos_tにそれらの変数の値を取得できます。fgetpos()次に、を使用fsetpos()してファイル内の位置を最初の一致から記録したポイントに戻し、それらの行を再読み取りして、必要な行を印刷できます。ファイルを閉じて再度開く必要はありません。

これらの関数に関する情報は、fgetpos/fsetposおよびftell/fseekにあり、およびの使用例はここfgetpos()にあります。fsetpos()

于 2013-02-03T20:38:36.460 に答える