Удаление строк в структуре - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. В программирование очень слаб, но стараюсь сам вникать в суть. Не могу никак сделать программу которая считывает структуру из файла с заказами, а потом удаляет заказы стоимость которых превышает заданную и сохранить новый список в новый файл. В моём коде не нужные строки в программе не видно но количество их пишет прежнее , а в новом файле остаются не тронутыми все строки.
Листинг программы
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <windows.h>
  6. #include <ctype.h>
  7. #include <stdlib.h>
  8. #include <iostream>
  9. //Начало программы
  10. main()
  11. {
  12. //Установка русского языка
  13. setlocale (LC_ALL, "Russian");
  14. /***********************/
  15. int i,n,kol,j,S,n_u;
  16. char s[100],fn[10];
  17. char company[20];
  18. FILE *f,*f1;
  19. struct reclame
  20. {
  21. char company[20];
  22. char profile[20];
  23. char requisites[20];
  24. char telephone[20];
  25. char name[20];
  26. int coast;
  27. char date[20];
  28. };
  29. reclame z[20];
  30. puts("Введите имя файла");
  31. gets(fn);
  32. if((f=fopen(fn,"r"))==NULL)
  33. puts("Неправильно задано имя файла \n");
  34. else
  35. {
  36. printf("\nФайл %s открыт \n", fn);
  37. puts("\nИсходный файл");
  38. puts("______________________________________________________________________________________________________________________");
  39. puts("| Фирма | Деятельность | Заказчик | Телефон | Имя заказа | Стоймость | Дата |");
  40. puts("----------------------------------------------------------------------------------------------------------------------");
  41. i=0;
  42. while(!feof(f))
  43. {
  44. 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);
  45. 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);
  46. puts("----------------------------------------------------------------------------------------------------------------------");
  47. i++;
  48. }
  49. n=i;
  50. printf("В файле %d записей \n", n);
  51. fclose(f);
  52. }
  53. /* ******************************************/
  54. puts("\nВведите стоймость\n");
  55. scanf("%d",&S);
  56.  
  57. fflush(stdin);
  58. puts("\nВведите имя нового файла");
  59. gets(fn);
  60. f1=fopen(fn,"w");
  61. printf("\nПолучившийся файл\n");
  62. puts("______________________________________________________________________________________________________________________");
  63. puts("| Фирма | Деятельность | Заказчик | Телефон | Имя заказа | Стоймость | Дата |");
  64. puts("----------------------------------------------------------------------------------------------------------------------");
  65. i=0;
  66. for (i=0;i<n;i++)
  67. if(S>z[i].coast)
  68. {
  69. 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);
  70. puts("----------------------------------------------------------------------------------------------------------------------");
  71. 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);
  72. }
  73. printf("В файле %d записей \n", n);
  74.  
  75. fclose(f1); // close the files
  76.  
  77. printf("Press any key...");
  78. getchar();
  79. return(0);
  80. }
Файл со структурой.
Листинг программы
  1. ByFly Интернет Иванов +375-555-55-55 Деморолик 1200000 25.04.2016
  2. 5Элемент Торговля Петров +375-444-44-44 Презентация 500000 12.05.2016
  3. Velcome Связь Васильев +375-666-66-66 Ролик 1400000 20.06.2016
  4. Белшина Производство Макаров +375-777-77-77 Слогон 200000 05.07.2016
  5. Корона Торговля Котова +375-888-88-88 Билборд 2000000 20.08.2016
  6. BestClub Развлечения Кент +375-999-99-99 Афиша 150000 21.08.2016
  7. WarGaming Игры Титов +375-111-11-11 Ролик 1300000 19.09.2016

Решение задачи: «Удаление строк в структуре»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. //Начало программы
  4. main()
  5. {
  6.  
  7.     setlocale (LC_ALL, "Russian");//Установка русского языка
  8.  
  9.     int i=0,n=0,kol=0,j=0,S=0,n_u=0;
  10.     char s[100],fn[10];
  11.     char company[20];
  12.     FILE *f,*f1;
  13.     struct reclame
  14.     {
  15.         char company[20];
  16.         char profile[20];
  17.         char requisites[20];
  18.         char telephone[20];
  19.         char name[20];
  20.         int coast;
  21.         char date[20];
  22.     };
  23.         struct reclame z[20];
  24.  
  25.     printf("Введите имя файла: ");
  26.     gets(fn);
  27.     if((f=fopen(fn,"r"))==NULL)
  28.     puts("Неправильно задано имя файла");
  29.     else
  30.     {
  31.         printf("\nФайл %s открыт \n", fn);
  32.             puts("\nИсходный файл");
  33.         puts("<br>");
  34.         puts("|    Фирма    |    Деятельность    |     Заказчик    |     Телефон    |   Имя заказа      |  Стоймость   |    Дата   |");
  35.         puts("----------------------------------------------------------------------------------------------------------------------");
  36.         i=0;
  37.         while(!feof(f))
  38.         {
  39.             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);
  40.             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);
  41.             puts("----------------------------------------------------------------------------------------------------------------------");
  42.             i++;
  43.         }
  44.         n=i;
  45.         printf("В файле %d записей \n", n);
  46.         fclose(f);
  47.         }
  48.         /* ******************************************/
  49.         printf("\nВведите стоймость: ");
  50.         scanf("%d",&S);
  51.         fflush(stdin);
  52.         printf("Введите имя нового файла: ");
  53.         gets(fn);
  54.         f1=fopen(fn,"w");
  55.         printf("\nПолучившийся файл:\n");
  56.         puts("<br>");
  57.         puts("|    Фирма    |    Деятельность    |     Заказчик    |     Телефон    |   Имя заказа      |  Стоймость   |    Дата   |");
  58.         puts("----------------------------------------------------------------------------------------------------------------------");
  59.         i=0;
  60.         for (i=0;i<n;i++)
  61.         if(S>z[i].coast)
  62.         {
  63.         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);
  64.         puts("----------------------------------------------------------------------------------------------------------------------");
  65.         n_u++;
  66.         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);
  67.         }
  68.  
  69.       printf("\nКоличество записей в новом файле: %d \n", n_u);
  70.  
  71.         fclose(f1);   // close f1
  72.  
  73.     printf("Press any key...");
  74.     getchar();
  75.     return(0);
  76. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы