一段时间(的fscanf(跟踪文件“%s”,操作码)!= EOF){}嗒嗒如何在符合条件时让fscanf重新读取一行?
偶尔我需要使我的代码的fscanf重新阅读时一定条件的线路得到满足。这可能吗;我会怎么做?
谢谢。
一段时间(的fscanf(跟踪文件“%s”,操作码)!= EOF){}嗒嗒如何在符合条件时让fscanf重新读取一行?
偶尔我需要使我的代码的fscanf重新阅读时一定条件的线路得到满足。这可能吗;我会怎么做?
谢谢。
假设输入文件是可搜索(而不是,例如,管道或网络流),你可以这样做:
fgetpos(tracefile, &position_before);
fscanf(tracefile, "%s ", opcode);
if (need_to_rescan) { fsetpos(tracefile, position_before); }
备份和重新扫描可能是非常低效的(以及问题不支持来自管道的输入等),所以你可能要考虑是否有其他选择。
我几乎从不直接使用fscanf
,因为知道文件指针在错误状态下的位置是一种痛苦。
我使用fgets
来拉一行,然后我可以使用sscanf
来记录我心中的内容,而不必返回到文件重新读取。
+1,我会这样做,而不是重读。 – 2010-04-29 14:06:49