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

Функция удаления строки из файла

28.05.2014, 10:02. Показов 392. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мной написана такая функция. В ней две проблемы:
1) после поиска выводится не найденное, а все, что записано
2) после удаления строки появляется строка нулей (в конце нового файла).
как это решить?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
void remove (){ //удаление
    struct recipe *list;
    int k=0; int n=0; char c; int i;
    FILE  *fa;
    fa=fopen("list.txt", "r");
    if (!fa){
        printf("невозможно открыть файл\n");
        exit(1);
    }   
    while (!feof(fa)){   
        if ((c=fgetc(fa))=='\n' || c==EOF){ //подсчет количества строк для последующего выделения памяти
            n++;
        } 
    }
    fseek (fa,0,SEEK_SET);//указатель в начало 
    list=new recipe [n*sizeof(recipe)];     
    while (!feof(fa)){
        fscanf(fa, "%s%s%d%d%d", &list[k].name,&list[k].mode, &list[k].price, &list[k].ccal, &list[k].time);
        k++;
    }
    fclose(fa);
    int m=0; int l=0; char *a;
    char s1[10];
    for (i=0; i<n; i++) {
        printf("%s %s %dруб %dккал %dмин\n", list[i].name, list[i].mode, list[i].price, list[i].ccal, list[i].time);
    }
    printf("введите имя\n");
    scanf("%s", &s1);
    for (i=0; i<k; i++){
        a=strtok(list[i].name, "_");//берем первую (главную) часть названия
        m=strspn(s1, a);// считаем количество совпадений
        a="\0";
        if (m>=5){
            for (i=0;i<n;i++){
                printf("%d. ", i);
                printf("%s\n", list[i].name);
            }       
            FILE *f2;
            f2=fopen("list1.txt", "w");             
            printf("введите номер ненужного блюда\n");
            scanf("%d",&l);
            for (i=0; i<n; i++){
            if (i!=l){       
                    if(i==0){
                        fprintf(f2, "%s %s %d %d %d", list[i].name,list[i].mode, list[i].price, list[i].ccal, list[i].time);
                    }
                    if (i!=0){                  
                        fprintf(f2, "\n%s %s %d %d %d", list[i].name,list[i].mode, list[i].price, list[i].ccal, list[i].time);
                    }
                }
            }   
            printf("запись успешно удалена\n");
            fclose(f2);
            remove("list.txt");
            rename("list1.txt","list.txt");
        }
    }
    
        if (m<5) {
        printf("не найдено\n");}
    delete [] list;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2014, 10:02
Ответы с готовыми решениями:

Функция удаления подстроки из строки
Начал читать книжку, в ней задание накидать такую функцию. Вроде написал, но безумно коряво с...

Функция удаления из строки n-символов, начиная с q-го
напишите функцию удаления из строки n-символов, начина с q-го

Функция для удаления слова из строки
Доброго времени суток, господа! Столкнулся с проблемой написания функции для удаления слова из...

Функция удаления строки с номером к из списка
Хелп , заранее спасибо

0
28.05.2014, 10:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2014, 10:02
Помогаю со студенческими работами здесь

Функция удаления из строки всех точек
Нужно разработать рекурсивную функцию для удаления всех точек из строки. Вот, что у меня...

Функция для удаления строки из двумерного массива
Массив должен передаваться в функцию как параметр. Написать функцию для удаления строки из...

Функция удаления из строки цифр
Задание: Напишите программу, которая осуществляет изменение обрабатываемой строки, удаляя из неё...

Не работает функция удаления файла
проблема, функция unlink() не хочет удалять файл, может ошибка в коде? define (&quot;H&quot;,...


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

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