Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
#1

Удаление строки из файла - C++

20.03.2014, 01:35. Просмотров 1959. Ответов 12
Метки нет (Все метки)

Здравствуйте! Подскажите пожалуйста, как реализовать функцию удаления нужной строки из файла. Только не по номеру, а по содержимому! Я так предполагаю, что для начала нужно найти эту строку в файле! Функцию поиска по ключу я сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool findInSortList(FILE *&f,int St, string key, int &pp, int &wp, TEdaF &eda){
        if (St==-1) {
            cout<<"Список пустой"<<endl<<endl;
            return 0;
        };
        wp=St;
        while (wp != -1) {
        fseek(f,wp,SEEK_SET);
        fread(&eda,sizeof(TEdaF),1,f);
        if (key==eda.blud)
        {break;}
        else{
            pp=wp;
            wp=eda.Next;
        }
    }
if(wp!=-1 && eda.blud==key)
    return true;
else
    return false;
}
Подскажите как дальше быть! Что делать? Ведь насколько я понимаю, то удалить из файла напрямую нельзя, ведь это не БД!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 01:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление строки из файла (C++):

Удаление строки из файла\либо удаление самого файла. - C++
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() { FILE *fout; open_file(&quot;abase.dat&quot;); ...

Удаление строки файла - C++
Подскажите как удалить строку из файла? я знаю что можно перезаписывать файл, удалить из первого файла строку и записать в другой файл.

Удаление строки из файла - C++
Кто может подсказать рабочую функцию удаление строки из файла. Поиск строки не нужен, только удаление :)

Удаление строки из файла - C++
В общем у меня есть текстовый документ, в котором что-то записано таблицей. И мне надо удалить из неё какую-либо строку. Я решил читать...

Удаление строки из файла - C++
Сабж, осуществляю ввод и вывод с помощью iostream и использованием векторного массива, нужно удалить строку из файла... Интересует пример...

Удаление строки из файла - C++
Добрый день, возник вопрос возможно ли удалить/изменить в файле слово/строку, не перезаписывая при этом весь файл?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.03.2014, 01:54 #2
Цитата Сообщение от yur@ Посмотреть сообщение
eda.blud
Поле blud, в TEdaF, типа string?
0
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
20.03.2014, 01:58  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Поле blud, в TEdaF, типа string?
да!
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.03.2014, 02:02 #4
Цитата Сообщение от yur@ Посмотреть сообщение
да!
Для таких структур нельзя использовать бинарные методы чтения\записи.
0
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
20.03.2014, 02:06  [ТС] #5
то есть сделать через массив char?

Добавлено через 2 минуты
хотя эта функция рабочая, поскольку я ее использовал в другом примере и все работало нормально!
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.03.2014, 02:12 #6
Цитата Сообщение от yur@ Посмотреть сообщение
хотя эта функция рабочая, поскольку я ее использовал в другом примере и все работало нормально!
Что, как и где используется - я не вижу (не ясновидящий). Но, что записывается в файл, когда пишется память под string?
0
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
20.03.2014, 02:17  [ТС] #7
Но, что записывается в файл,
когда пишется память под string?
ну в бинарный файл запишется какой-то набор символов, если я правильно понимаю
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.03.2014, 02:21 #8
Вот здесь почитайте, как устроены разные реализации string: http://cpp.com.ru/meyers/ch2.html#t30
0
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
20.03.2014, 17:07  [ТС] #9
alsav22, Я сделал через массив char[]!
заголовочный файл имеет такой вид:
C++
1
2
3
4
5
6
7
typedef
    struct SEdaF{
      char stran[30];
      char blud[30];
      int kalory;
      int  Next;
} TEdaF;
И все же подскажите как изъять нужную строку из файла?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.03.2014, 17:09 #10
Цитата Сообщение от yur@ Посмотреть сообщение
И все же подскажите как изъять нужную строку из файла?
Обычно, в таких случаях, файл переписывают (в другой файл, или сначала в массив, потом в этот же файл).
0
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
20.03.2014, 17:12  [ТС] #11
alsav22, ок! то есть мне нужно прочитать весь файл и сразу его записывать заново, и если найдется нужная строка, то просто переместить указатель на размер строки?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.03.2014, 17:26 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от yur@ Посмотреть сообщение
и если найдется нужная строка, то просто переместить указатель на размер строки?
Не нужно там ничего пермещать. Прочитали структуру (fread(&eda,sizeof(TEdaF),1,f)), указатель и так уже будет на следующей, проверили на ключ, если нет, то записываете считанную структуру в файл, если да, то просто не записываете.
1
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
20.03.2014, 17:42  [ТС] #13
сейчас попробую, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 17:42
Привет! Вот еще темы с ответами:

Удаление из файла строки - C++
Есть файл (computers.dat) куда записываются данные (структура) о компьютерах (тип, год, цена). Задание: Пользователь вводит год...

Удаление строки из файла по имени - C++
Помогите пожалуйста удалить строку из файла по введенному имени в консоле.

Неправильное удаление строки из файла - C++
Здраствуйте! Относительно недавно изучаю C++, и знакомлюсь с работой с файлами. Решил сделать приложение консольное. Ну фильмы, которые...

Запись/Удаление строки из файла - C++
Помогите с записью строки в файл, вообще если что задание написать &quot;Телефонный справочник&quot; в каждой строке которого должно быть две позиции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.03.2014, 17:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru