Проблема решилась добавление fflush(f); после fwrite. Просто fwrite не переводил курсор в файле и из-за этого начинались проблемы при последующих манипуляциях с курсором. А fflush(); сразу скидывает буфер в файл и перемещает курсор. В общем, всё оказалось проще.