Удалить из файла все записи с нулевым количеством товара - C (СИ)
Формулировка задачи:
Дан файл, содержащий информацию о наличии товаров на складе. Структура записи файла: шифр товара, наименование, количество, цена.
Написать программу, которая
- выводит на экран содержимое файла;
- изменяет в записи с заданным шифром количество или цену товара по запросу с клавиатуры;
- удаляет из файла все записи с нулевым количеством товара.
P.s. Если у вас есть время на написание хотя бы одной функции - прошу вас им воспользоваться. Завтра сдача, а файл пуст. Заранее огромное спасибо.
Ошибка, которую он выдает при выборе пункта меню 1:
Наработок кода с первой функцией вывода:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define N 50 /*Определяем размер массива структур*/ #define CIPH 4 /*Определяем длину поля шифра товара в файле*/ #define TITLE 32 /*Определеяем длину поля наименования товара в файле*/ #define NUMB 9 /*Определеяем длину поля количества товара в файле*/ #define PRICE 9 /*Определеяем длину поля цены товара в файле*/ struct goods /*Структура записи файла*/ { int ciph; /*Шифр товара*/ char title[TITLE]; /*Наименование товара*/ unsigned int numb; /*Количество товара*/ unsigned int price; /*Цена товара*/ }; int add_mas(FILE *,struct goods *); void read_str(FILE *,char *); void menu(struct goods *,int *); void output_all(struct goods *,int); /*----------------------*/ /* главная функция */ /*----------------------*/ int main() { SetConsoleCP(1251); //ввод русских символов SetConsoleOutputCP(1251); //вывод руссих символов struct goods mas[N]; //массив структур данных int kol; //начальное количество элементов (строк в файле) массива структур FILE *f; //указатель на входной файл f = fopen("goods.txt","r"); if (!f) // проверка существования файла { puts("Файл goods.txt не найден, нажмие любую кнопку для завершения работы программы"); return 1; } kol=add_mas(f,mas); fclose(f); menu(mas,&kol); return 0; } void menu(struct goods *mas, int *kol) { char n; /* номер пункта меню */ do { system("cls"); puts ("\n========================================================"); puts ("Выберите номер пункта меню:"); puts ("1 - вывод на экран содержимого файла"); puts ("2 - изменение количества или цены товара с заданным шифром"); puts ("3 - удаление из файла все записи с нулевым количеством товара"); puts ("4 - выход из программы"); puts ("------------------------------------------------------"); n = getch(); switch(n) { case '1': output_all(mas,*kol); break; case '2': puts("Вы выбрали 2\n"); break; case '3': puts("Вы выбрали 3\n"); break; case '4': break; default: puts("\nНеверное значение."); } if (n!='4') { puts("\nДля возвращения к меню нажмите любую клавишу"); getche(); } } while (n != '4'); return 0; } /*функция добавления данных из файла в массив структур и расположение их в алфавитном порядке*/ int add_mas(FILE *f,struct goods *mas) { int i=0,j,n; struct goods pr; char ciph[CIPH], price[PRICE], numb[NUMB]; while (!feof(f)) { read_str(f,mas[i].title); read_str(f,ciph); mas[i].ciph=atoi(ciph); read_str(f,numb); mas[i].numb=atoi(numb); read_str(f,price); mas[i].price=atoi(price); i++; fgetc(f); } n=i; //кол-во начальных строк данных /*расположение данных в алфавитном порядке*/ for (i=0;i<n-1;i++) for(j=0;j<n-1;j++) if (strcmp(mas[j].title,mas[j+1].title)>0) { pr=mas[j]; mas[j]=mas[j+1]; mas[j+1]=pr; } return n; } void read_str(FILE *f,char *zap) { int i=0; do zap[i]=fgetc(f); while(zap[i++]!=';'); zap[i-1]='\0'; } void output_all (struct goods *mas,int n) { int i; char otitle[]="Наименование", ociph[]="Шифр", onumb[]="Количество", oprice[]="Цена", nom[]="№"; printf("|| %-3s|| %-32s|| %-4s|| %-9s|| %-9s||\n",nom,otitle,ociph,onumb,oprice); printf("==============================================================\n"); for (i=0;i<n;i++) printf("|| %-3s|| %-32s|| %-4s|| %-9s|| %-9s||\n",i+1,mas[i].title,mas[i].ciph,mas[i].numb,mas[i].price); }
Решение задачи: «Удалить из файла все записи с нулевым количеством товара»
textual
Листинг программы
printf("|| %-3s|| %-32s|| %-4s|| %-9s|| %-9s||\n",i+1,mas[i].title,mas[i].ciph
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д