0

while( fscanf( tracefile, "%s ", opcode ) != EOF ){何とか}

場合によっては、コード内の特定の条件が満たされたときに、fscanf に行を再読み取りさせる必要があります。これは可能ですか?どうすればいいですか?

ありがとう。

4

2 に答える 2

3

fscanfエラー状態でファイルポインターがどこに残っているかを知るのは面倒なので、直接使用することはほとんどありません。

fgets以前は 1 行を引き込んでいましたが、ファイルに戻って再度読み取る必要なく、心ゆくまで使用できますsscanf

于 2010-04-29T04:21:14.753 に答える
0

入力ファイルがシーク可能である (たとえば、パイプやネットワーク ストリームではない) と仮定すると、次のようなことができます。

fgetpos(tracefile, &position_before);
fscanf( tracefile, "%s ", opcode );
if (need_to_rescan) { fsetpos(tracefile, position_before); }

バックアップと再スキャンはかなり非効率的である可能性があります (パイプからの入力をサポートしていないなどの問題も同様です)。代替手段があるかどうかを検討することをお勧めします。

于 2010-04-29T04:02:23.223 に答える