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