Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление строки из файла, и смещение желательно 
:(
    Опции темы
Файловик
  Дата 7.5.2005, 17:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Какаим образом удалить строку из файла? И желательно еще установить смещение при удалении? Чтоб строка не пустовала.
Можно примерчик не большой.
Спасибо.

  Вверх
HELPER
Дата 8.5.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 18.4.2005

Репутация: -2
Всего: -2



Ну короче:
1. Перемещаешь указатель на нужную строку.
2. Проходишь цикл до конца файла, считывая i+1 строку, и записывая ее на i-ю строку.
3. Перемещаешь указатель на последнюю строку.
4. Замещаешь ее пробелами например.

ПС: енто самый легкий способ.
PM MAIL   Вверх
Файловик
Дата 8.5.2005, 10:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как замещать пробелами? Надо, чтоб пробелов было заведомо больше, чем длина строки файла?
Код

 fputs("                                                     ", file);

так сойдет?
  Вверх
Joes
Дата 8.5.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

Репутация: нет
Всего: 7



Цитата
так сойдет?

хотя бы \t - символ табуляции...
ЛУчше так: находишь последний не пробельный символ строки, после которой было удаление, делаешь \n\t - переход на красную сроку, и заменяешь пробельные символы на непробельные (это если ты будешь замещать все символы удаляемой строки на пробелы)... Но это тоже совсем не оптимальный вариант smile

Это сообщение отредактировал(а) Joes - 8.5.2005, 11:18
PM MAIL   Вверх
Файловик
Дата 8.5.2005, 11:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Joes а какой самый оптимальный?
  Вверх
Файловик
Дата 8.5.2005, 11:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А че нельзя эту самую последнюю строку удалить полностью, а не пробелами заместить? Как в блокноте выделил и удалил...
  Вверх
Joes
Дата 8.5.2005, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

Репутация: нет
Всего: 7



Цитата
Joes а какой самый оптимальный?

Ну вот этот, например:
1. Открыть файл для чтения и записи.
2. Сохранить содержимое файла после удаляемой строки во временный файл или в буфер(массив символов или байт).
3. Поставить файловый указатель на начало удаляемой строки.
4. Обрезать файл.
5. Записать содержимое временного файла или буфера в исходный файл.
6. Закрыть исходный файл.

PM MAIL   Вверх
файловик
Дата 8.5.2005, 14:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











сенк
  Вверх
asgaroth
Дата 8.5.2005, 17:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Joes @ 8.5.2005, 12:51)
4. Обрезать файл.

а как его обрезать smile
  Вверх
Fixin
Дата 8.5.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



1)Скопировать старый файл во временный, пропустив эту строку.
2)Потом переместить временный в исходный.
PM MAIL ICQ   Вверх
Guest
Дата 9.5.2005, 15:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered






































































































































































































































сенк




































  Вверх
Fixin
Дата 9.5.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Это значит - "БОООльшой сенк!"? smile smile smile
PM MAIL ICQ   Вверх
файловик
Дата 11.5.2005, 13:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну да smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.