Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
1

Удалить из файла строку по условии

21.10.2018, 12:08. Показов 410. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно удалить из файла строку по условии.
Ввожу название Тура,и мне удаляете,все данные об этом туре.
Только когда пишут название последней строки,мне удаляет,а когда пишу название выше последней удаляет все содержимое.
В чем проблема?

C
1
2
3
4
5
6
7
8
struct Tyru
{
char NAME[20];
int VARTIST;
int TRUVAL;
int DATA[3];
char PLACE[10];
};
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void zapdel(char filename[])
{
    char n[100];
    int r=0;
    cout<<"Введите название Тура данныех которого хотите удалить\n";
    cin>>n;
    FILE* f;
    int k,i=0;
    Tyru s[100];
    if((f=fopen(filename,"r"))==NULL)
    {
        cout<<"Файл не открыто!"<<endl;
    }
    else
        cout<<"Файл открыто!"<<endl;
    while(!feof(f))
    {
        fscanf(f, "%s%d%d%d%d%d%s", s[r].NAME, &s[r].VARTIST,&s[r].DATA[0],&s[r].DATA[1],&s[r].DATA[2],&s[r].TRUVAL,s[r].PLACE);
        r++;
    }
    fclose(f);
    if ((f = fopen(filename, "w")) == NULL) 
    {
        cout<<"Файл не открыто!"<<endl;
        
    }
 
    for(int i = 0; i < r - 1; i++)
    {
        if(strcmp(s[i].NAME, n)==0)
        {
        fprintf(f, "%s\t\t%d\t\t%d %d %d\t\t%d\t\t%s\n", s[i].NAME, s[i].VARTIST,s[i].DATA[0],s[i].DATA[1],s[i].DATA[2],s[i].TRUVAL,s[i].PLACE);
        }
    }
 
    fclose(f);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2018, 12:08
Ответы с готовыми решениями:

Как удалить строку при условии
Помогите пожалуйста. Нужно удалить все строки (кроме первой), где в столбце E НЕ встречается...

Удалить строку из файла. Вставить строку из файла
Chao ;-) Задача: изменение файла БЕЗ СОЗДАНИЯ ДОПОЛНИТЕЛЬНОГО ФАЙЛА. Необходимо осуществить...

Удалить строку из файла
file = open('input(indv).txt', 'r+') count = 0 for string in file: string =...

Удалить строку из файла
есть простенькакая функция записи в файлд и вывод строк из файла в цикле. нужно в каждом цикле...

5
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
21.10.2018, 13:10 2
Цитата Сообщение от Yamis Посмотреть сообщение
if(strcmp(s[i].NAME, n)==0)
Это проверка на совпадение, а надо на несовпадение
C
1
if(strcmp(s[i].NAME, n)!=0)
Кстати,
1. Действительно ли название тура состоит из одного слова?
Цитата Сообщение от Yamis Посмотреть сообщение
cin>>n;
Это ввод одного слова

2. С чего это клавиатурный ввод-вывод через iostream,
а файловый через stdio.h?
Вы уж определитесь - или то или другое.
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
21.10.2018, 16:04  [ТС] 3
Всмысле,мне надо например вот так:
Ввел две строки
Название тура Стоимость Дата Продолжительность Свободные места
назва1 200 22.08.2018 3 Есть
назва2 300 12.08.2018 2 Нету

И когда пишу у функции удаления, назва1,мне удаляет все это поле.
Так должно быть
назва2 300 12.08.2018 2 Нету


Но ошибка в том что когда напишу например назва1,мне удалит из файла,все строки которые были раньше добавлены,
а когда пишу последнюю строку тоисть назва2,тогда оно удаляет нормально

Добавлено через 2 часа 45 минут
Да состоит из одного слова,и я не думаю что оно не работает,из-за того что через разные библиотеки ввод-вывод
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
21.10.2018, 16:48 4
Yamis, исправьте равно на не равно и посмотрите результат, а потом уж будем его обсуждать!
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
21.10.2018, 18:34  [ТС] 5
Вроде-бы работает,но когда остается две строки,и я пишу верхнюю,то из файла удаляються две,а не одна.
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
21.10.2018, 18:42  [ТС] 6
Написал чтобы удалило название "kinec" на первом скриншоте,
На втором видно что поле удалило,но еще удалилось почему-то последнее поле "yui"
Миниатюры
Удалить из файла  строку по условии   Удалить из файла  строку по условии  
0
21.10.2018, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2018, 18:42
Помогаю со студенческими работами здесь

Удалить из файла строку
Как удалить определённую строку из файла. Вот код: string path = &quot;Data/data.txt&quot;; ...

Удалить строку из файла
У меня есть файл test.txt: 4;fds;aaa;aaa;aaa; 1;bbb;bbb;bbb;bbb; 3;ttt;ttt;ttt;ttt; ...

Удалить строку из файла
Добрый день. Подскажите пожалуйста, как правильно удалить строку из файла. Я знаю номер строки (r)...

Удалить строку из файла
Есть текстовый файл с содержанием: i я do делать go идти rain дождь Нужно сделать так, чтобы...

Удалить третью строку из файла
Имеется текстовый файл. Удалить из него третью строку. Результат записать в другой файл.

Удалить из файла строку с номером k
Задача №1 Описать функцию Size(Name) целого типа, возвращающую число строк в текстовом файле с...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru