Удаление строк в структуре - C (СИ)
Формулировка задачи:
Всем привет. В программирование очень слаб, но стараюсь сам вникать в суть. Не могу никак сделать программу которая считывает структуру из файла с заказами, а потом удаляет заказы стоимость которых превышает заданную и сохранить новый список в новый файл. В моём коде не нужные строки в программе не видно но количество их пишет прежнее , а в новом файле остаются не тронутыми все строки.
Листинг программы
- #include<stdio.h>
- #include<string.h>
- #include <stdio.h>
- #include <conio.h>
- #include <windows.h>
- #include <ctype.h>
- #include <stdlib.h>
- #include <iostream>
- //Начало программы
- main()
- {
- //Установка русского языка
- setlocale (LC_ALL, "Russian");
- /***********************/
- int i,n,kol,j,S,n_u;
- char s[100],fn[10];
- char company[20];
- FILE *f,*f1;
- struct reclame
- {
- char company[20];
- char profile[20];
- char requisites[20];
- char telephone[20];
- char name[20];
- int coast;
- char date[20];
- };
- reclame z[20];
- puts("Введите имя файла");
- gets(fn);
- if((f=fopen(fn,"r"))==NULL)
- puts("Неправильно задано имя файла \n");
- else
- {
- printf("\nФайл %s открыт \n", fn);
- puts("\nИсходный файл");
- puts("______________________________________________________________________________________________________________________");
- puts("| Фирма | Деятельность | Заказчик | Телефон | Имя заказа | Стоймость | Дата |");
- puts("----------------------------------------------------------------------------------------------------------------------");
- i=0;
- while(!feof(f))
- {
- fscanf(f,"%s%s%s%s%s%d%s",&z[i].company,&z[i].profile,&z[i].requisites,&z[i].telephone,&z[i].name,&z[i].coast,&z[i].date);
- printf("|%-13s|%-20s|%-17s|%-16s|%-19s|%-14d|%-11s|\n",z[i].company,z[i].profile,z[i].requisites,z[i].telephone,z[i].name,z[i].coast,z[i].date);
- puts("----------------------------------------------------------------------------------------------------------------------");
- i++;
- }
- n=i;
- printf("В файле %d записей \n", n);
- fclose(f);
- }
- /* ******************************************/
- puts("\nВведите стоймость\n");
- scanf("%d",&S);
- fflush(stdin);
- puts("\nВведите имя нового файла");
- gets(fn);
- f1=fopen(fn,"w");
- printf("\nПолучившийся файл\n");
- puts("______________________________________________________________________________________________________________________");
- puts("| Фирма | Деятельность | Заказчик | Телефон | Имя заказа | Стоймость | Дата |");
- puts("----------------------------------------------------------------------------------------------------------------------");
- i=0;
- for (i=0;i<n;i++)
- if(S>z[i].coast)
- {
- printf("|%-13s|%-20s|%-17s|%-16s|%-19s|%-14d|%-11s|\n",z[i].company,z[i].profile,z[i].requisites,z[i].telephone,z[i].name,z[i].coast,z[i].date);
- puts("----------------------------------------------------------------------------------------------------------------------");
- fprintf(f1,"|%-13s|%-20s|%-17s|%-16s|%-19s|%-14d|%-11s|\n",z[i].company,z[i].profile,z[i].requisites,z[i].telephone,z[i].name,z[i].coast,z[i].date);
- }
- printf("В файле %d записей \n", n);
- fclose(f1); // close the files
- printf("Press any key...");
- getchar();
- return(0);
- }
Файл со структурой.
Листинг программы
- ByFly Интернет Иванов +375-555-55-55 Деморолик 1200000 25.04.2016
- 5Элемент Торговля Петров +375-444-44-44 Презентация 500000 12.05.2016
- Velcome Связь Васильев +375-666-66-66 Ролик 1400000 20.06.2016
- Белшина Производство Макаров +375-777-77-77 Слогон 200000 05.07.2016
- Корона Торговля Котова +375-888-88-88 Билборд 2000000 20.08.2016
- BestClub Развлечения Кент +375-999-99-99 Афиша 150000 21.08.2016
- WarGaming Игры Титов +375-111-11-11 Ролик 1300000 19.09.2016
Решение задачи: «Удаление строк в структуре»
textual
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- //Начало программы
- main()
- {
- setlocale (LC_ALL, "Russian");//Установка русского языка
- int i=0,n=0,kol=0,j=0,S=0,n_u=0;
- char s[100],fn[10];
- char company[20];
- FILE *f,*f1;
- struct reclame
- {
- char company[20];
- char profile[20];
- char requisites[20];
- char telephone[20];
- char name[20];
- int coast;
- char date[20];
- };
- struct reclame z[20];
- printf("Введите имя файла: ");
- gets(fn);
- if((f=fopen(fn,"r"))==NULL)
- puts("Неправильно задано имя файла");
- else
- {
- printf("\nФайл %s открыт \n", fn);
- puts("\nИсходный файл");
- puts("<br>");
- puts("| Фирма | Деятельность | Заказчик | Телефон | Имя заказа | Стоймость | Дата |");
- puts("----------------------------------------------------------------------------------------------------------------------");
- i=0;
- while(!feof(f))
- {
- fscanf(f,"%s%s%s%s%s%d%s",&z[i].company,&z[i].profile,&z[i].requisites,&z[i].telephone,&z[i].name,&z[i].coast,&z[i].date);
- printf("|%-13s|%-20s|%-17s|%-16s|%-19s|%-14d|%-11s|\n",z[i].company,z[i].profile,z[i].requisites,z[i].telephone,z[i].name,z[i].coast,z[i].date);
- puts("----------------------------------------------------------------------------------------------------------------------");
- i++;
- }
- n=i;
- printf("В файле %d записей \n", n);
- fclose(f);
- }
- /* ******************************************/
- printf("\nВведите стоймость: ");
- scanf("%d",&S);
- fflush(stdin);
- printf("Введите имя нового файла: ");
- gets(fn);
- f1=fopen(fn,"w");
- printf("\nПолучившийся файл:\n");
- puts("<br>");
- puts("| Фирма | Деятельность | Заказчик | Телефон | Имя заказа | Стоймость | Дата |");
- puts("----------------------------------------------------------------------------------------------------------------------");
- i=0;
- for (i=0;i<n;i++)
- if(S>z[i].coast)
- {
- printf("|%-13s|%-20s|%-17s|%-16s|%-19s|%-14d|%-11s|\n",z[i].company,z[i].profile,z[i].requisites,z[i].telephone,z[i].name,z[i].coast,z[i].date);
- puts("----------------------------------------------------------------------------------------------------------------------");
- n_u++;
- fprintf(f1,"|%-13s|%-20s|%-17s|%-16s|%-19s|%-14d|%-11s|\n",z[i].company,z[i].profile,z[i].requisites,z[i].telephone,z[i].name,z[i].coast,z[i].date);
- }
- printf("\nКоличество записей в новом файле: %d \n", n_u);
- fclose(f1); // close f1
- printf("Press any key...");
- getchar();
- return(0);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д