Если ваш входной файл доступен для поиска (а не, например, канал или сетевой поток), вы можете сделать что-то вроде:
fgetpos(tracefile, &position_before);
fscanf( tracefile, "%s ", opcode );
if (need_to_rescan) { fsetpos(tracefile, position_before); }
Резервное копирование и повторное сканирование могут быть довольно неэффективными (так же как и проблемы не поддержки ввода из канала и т. Д.), Поэтому вы можете подумать, есть ли альтернатива.