The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"удаление /перезапись строк в файле"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"удаление /перезапись строк в файле"
Сообщение от Arifolth emailИскать по авторуВ закладки(ok) on 23-Окт-04, 14:32  (MSK)
День добрый всем
есь файл (конфигурационный) в 5 строк
нужно полностью заменить строку N - от её начала и до '\n'

я устанавливаю текущую пизицию в файле  с помощью ftell()/fseek()
потом пишу строку - fputs(), а она оказывается дописанной в конец т. е. после "последней строки"

файл открывается
if((fp = fopen(configPath, "r+")) == 0)
{
perror("error: can`t open configuration file\n");
exit(1);
}
в мане написано что - если так(r+) открыть файл то вставлять символы или строки моно с любого места

так вообщем- то тоже можно, но как мне удалить строку N вместо кот появилась моя???

заранее благодарен за ответы

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "удаление /перезапись строк в файле"
Сообщение от mirya emailИскать по авторуВ закладки on 23-Окт-04, 16:48  (MSK)
ты не сможешь просто так заменить одну строку другой, у них же разные длины. Т.е. сначала придеться найти нужную строку, затем в зависимости от соотношения размеров той, к-рую удаяешь и новой увеличить/урезать файл и перенести все данные после конца удаляемой строки вперед/назад; на нужное место перезаписать новую строку

"вставлять" - означает перезаписывать с любого места; заметь что "r+" не создасть несущ. файл, рекомендуеся "w+"

по поводу fseek() - возможно, не то указал в 3-м параметре. Вообще приводи весь кусок не так работающего кода, легче будет понять, где грабли

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "удаление /перезапись строк в файле"
Сообщение от dimus Искать по авторуВ закладки(??) on 26-Окт-04, 14:31  (MSK)
Гораздо лучше не пытаться делать так, как Вы хотите. Сделайте так:
1. Разобрать файл конфигурации - прекрасно реализуется при помощи двух классов на С++. Если надо вносить изменения, то:
2. Скопировать старый файл конфигурации во временный, например config.cfg -> config.cfg.old
3. Сбросить на диск буфера
4. Перезаписать config.cfg с добавлениями и изменениями.
5. Опять сбросить буфера
6. Если все нормально - удалить config.cfg.old
Из параноидальных соображений можно после пункта 4 сверить новый конфиг с тем, что у нас в памяти, а то вдруг операция записи прошла неудачно из-за некачественной поверхности носителя информации.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "удаление /перезапись строк в файле"
Сообщение от Arifolth Искать по авторуВ закладки(ok) on 27-Окт-04, 11:35  (MSK)
Ладно - всем пасибы
буду просто считывать в память,
удалять файл,
заменять нужную строку,
записывать в файл
просто и сердито
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру