Можно ли на Си поменять определенную информацию в конкретном месте в файле, а все остальное оставить?
Ответ
Можно, если размер измененной информации соответствует размеру исходной.
Представьте файл магнитофонной лентой (забавно, уже нужно задумываться - а видел ли собеседник такую :)), на которой записаны разные песни. Вы хотите одну из них, в средине, заменить. Подгоняете ленту в нужное место (fseek()), и перезаписываете (fwrite()).
Но если новая песня короче старой - останется кусок старой (или, если просто сотрете этот кусок - тишина), если длиннее - перезапишете начало следующей.
Иначе - только перезапись всего, что находится после изменяемой информации, на новые места.
Т.е., переводя на наши компьютерные реалии - если в файле записаны, например, одинакового размера структуры, то одну из них можно заменить, не трогая другие. Если текст - то слово (строку, абзац) можно заменить только словом (строкой, абзацем) той же длины.
Комментариев нет:
Отправить комментарий