Проблема 2: Открытие файла на каждой итерации цикла, поскольку он изменяется
Возможно, я не совсем квалифицирован, чтобы ответить на этот вопрос, но выполнение fopen
на каждой итерации (и fclose
), вероятно, кажется расточительным и медленным. Чтобы ответить или получить более квалифицированный ответ, я думаю, нам нужно больше узнать о ваших данных.
Например:
- Текстовый или двоичный?
- Вы обрабатываете записи или поток текста? То есть это файл записей или поток данных? (вы не взламываете гены, не так ли?: -)
Я спрашиваю как, судя по вашему комментарию "потому что он менялся на каждой итерации", вам лучше использовать файл с произвольным доступом . Таким образом, я предполагаю, что вы снова открываете fseek
до точки, которую вы, возможно, прошли (в своем потоке данных) и внесли изменения. Однако, если вы открываете файл в двоичном виде, вы можете fseek
просмотреть его в любом месте, используя fsetpos
и fseek
. То есть вы можете «искать» в обратном направлении.
Кроме того, если ваши данные основаны на записях или каким-либо образом организованы, вы также можете создать для них индекс. при этом вы можете использовать fsetpos
, чтобы установить указатель на интересующий вас индекс и пройти по нему. Таким образом, экономия времени при поиске области данных для изменения. Вы можете даже сохранить свой индекс в сопровождающем файле индекса.
Обратите внимание, что вы можете записать простой текст в двоичный файл. Возможно, стоит провести расследование?