while(fscanf(tracefile,“%s”,opcode)!= EOF){blah}
偶尔我需要让fscanf在满足我的代码中的某个条件时重新读取一行。这可能吗;我该怎么做?
感谢。
答案 0 :(得分:3)
我几乎从不直接使用fscanf
,因为知道错误条件下文件指针的位置会很痛苦。
我使用fgets
拉入一行,然后我可以将sscanf
用于我的内容,而无需返回文件重新阅读。
答案 1 :(得分:0)
假设您的输入文件是可搜索的(例如,不是管道或网络流),您可以执行以下操作:
fgetpos(tracefile, &position_before);
fscanf( tracefile, "%s ", opcode );
if (need_to_rescan) { fsetpos(tracefile, position_before); }
备份和重新扫描可能效率很低(以及不支持管道输入等问题),因此您可能需要考虑是否有替代方案。