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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа вычисления простой формулы http://www.cyberforum.ru/cpp-beginners/thread1190940.html
Доброе утро, подскажите, решение. Нам ничего не объяснили, методичек не дали, сказали "загуглите". Все, что смог загуглить, видно в коде ниже. Но как видно - не сработало. \frac{\sqrt{cos(\alpha)+sin(\beta)}}{a^3+b^2-c^3} #include <iostream> #include <cmath> int main() { double a, b, c, alpha, beta;
C++ Найти значение функции Найти значение функции y = 3x6 − 6x2 − 7 при данном значении x. http://www.cyberforum.ru/cpp-beginners/thread1190895.html
Undefined symbol C++
Здравствуйте! При линковке в Borland C++ 3.0 возникают ошибки: Undefined symbol _SELECT in module ... Undefined symbol _SEND in module ... Undefined symbol _RECV in module ... и т. д. Однако, они описаны во включенном .h файле, только без нижнего подчёркивания "_" (select, send, recv). Откуда берётся "_", может не правильные настройки Linker ?
C++ Не работает сортировка по алфавиту
Здравствуйте. Я пытаюсь отсортировать по алфавиту фамилии (структуры), но сортировка вставками не работает, у меня при выводе самый первый в списке пропадает, остальные выводятся в порядке ввода. Помогите, пожалуйста, найти ошибку. Алгоритм сортировки for(i=1;i<n;i++) { strcpy(st.FIO,alp.FIO); for(j=i-1;j>=0 && strcmp(alp.FIO,st.FIO)>0;j--) strcpy(alp.FIO,alp.FIO); st.at=alp.at;...
C++ Написать программу заполнения двумерного массива A по схеме, результаты заполнения выдать на экран и в файл http://www.cyberforum.ru/cpp-beginners/thread1190837.html
помогите, пожалуйста, написать программу заполнения двумерного массива A по схеме. Результаты заполнения выдать на экран и в файл. 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 16 17 18 24 23 22 21 20 19 25 26 27 28 29 30 36 35 34 33 32 31
C++ Запретить редактирование переменной внутри класса как сделать чтобы переменная (не const) внутри класса чтобы она одновременно была видна из места вызова, но ей там нельзя было что то присвоить? скажем: class Test { public: int Count; ... }; void main() подробнее

Показать сообщение отдельно
nsh12
0 / 0 / 0
Регистрация: 14.05.2014
Сообщений: 6
28.05.2014, 10:02     Функция удаления строки из файла
Мной написана такая функция. В ней две проблемы:
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru