0

而(fscanf(跟踪文件,“%s”,操作码)!= EOF){blah}

有时我需要让 fscanf 在满足我的代码中的某个条件时重新读取一行。这可能吗; 我该怎么做?

谢谢。

4

2 回答 2

3

我几乎从不fscanf直接使用,因为知道文件指针在错误情况下的位置很痛苦。

fgets习惯拉入一行,然后我可以尽情使用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 回答