如何在满足条件的情况下让fscanf重新读取一行?

时间:2010-04-29 03:53:47

标签: scanf

while(fscanf(tracefile,“%s”,opcode)!= EOF){blah}

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

感谢。

2 个答案:

答案 0 :(得分:3)

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

我使用fgets拉入一行,然后我可以将sscanf用于我的内容,而无需返回文件重新阅读。

答案 1 :(得分:0)

假设您的输入文件是可搜索的(例如,不是管道或网络流),您可以执行以下操作:

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

备份和重新扫描可能效率很低(以及不支持管道输入等问题),因此您可能需要考虑是否有替代方案。