Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы - C (СИ)

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

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

Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы.Та вывести на печать те записи вес которых больше 5 кг.

Cреда:

DEV-C++ Программу написал только есть малость глюки.

fn UpdFile(void):

НЕ обновляет значение в файле по номеру(n);

fn DelZap(void):

пишет что файл str dell .. но файл остается;
#include <stdio.h>
struct prod
{   int n;
    char nazvaProd[12];
    int kg;
    int cina;
}; struct prod st;
 
int menu(void); 
void NewAddFile(void);
void UpdFile(void);
void DelZap(void);
void PrintMassCat(void);
 
 main()
{   int a;
    {
        while((a=menu())!=5)
        { switch(a)
        {
            case 1:   
                 NewAddFile();
                 break;
                 case 2:   
                 UpdFile();
                 break;
                 case 3:   
                  DelZap();
                 break;
                 case 4:   
                  PrintMassCat();
                 break;
                                
                 }}   
              }
return 0;}
int menu(void)
{int nmenu;
    printf("1-NewAddFile\n");
    printf("2-UpdFile\n");
    printf("3-DelZap\n");
    printf("4-PrintMassCat\n");
    printf("5-The END\n");
    scanf("%d",&nmenu);
    return nmenu;
    }
void NewAddFile(){
        FILE*p;
if ((p=fopen("product.dat","a+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  
printf("vvedit nomer zapusy vid 1 ,0 dlya vuhody\n");
scanf("%d",&st.n);
 while(st.n!=0)
 {  printf("nazva price vaga\n");
   scanf("%s%d%d",&st.nazvaProd,&st.cina,&st.kg);
    fseek(p,(st.n-1)*sizeof(struct prod),SEEK_SET);
 fwrite(&st,sizeof(struct prod),1,p);        
 printf("vvedit nomer zapusy  ,0 dlya vuhody\n");
   scanf("%d",&st.n);   
               }
                fclose(p);            
             }
void UpdFile(){
           int a,vaga;
                    FILE*p;
if ((p=fopen("product.dat","r+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  
 printf("vvedit nomer zapusy dlua UPD\n");
 scanf("%d",&a);
 fseek(p,(a-1)*sizeof(struct prod),SEEK_SET);
 fread(&st,sizeof(struct prod),1,p);
 if(st.n!=0)
 printf("net dannuh.\n");
  else
  {
    printf("%10s%10s%10d%10d\n",st.n,st.nazvaProd,st.cina,st.kg);  
    printf("new zn vaga\n");
    scanf("%d",&vaga);
    st.kg=vaga;
    fseek(p,(a-1)*sizeof(struct prod),SEEK_SET);
    fwrite(&st,sizeof(struct prod),1,p);
      }    
      fclose(p);      
           }
void DelZap(){
        FILE*p;
if ((p=fopen("product.dat","a+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  struct prod bst={0,"",0,0};
 int n;            
   printf("vvedit zapusy dlua DELL\n");
   scanf("%d",&n);
    fseek(p,(n-1)*sizeof(struct prod),SEEK_SET);
 fread(&st,sizeof(struct prod),1,p);
  if(st.n==0)
 printf("net dannuh.\n");
  else
  {  fseek(p,(n-1)*sizeof(struct prod),SEEK_SET);
    fwrite(&bst,sizeof(struct prod),1,p);
    printf("str dell\n");
      }    
      fclose(p);
                    }
                    
void PrintMassCat()
{
               
            FILE*p;
if ((p=fopen("product.dat","a+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  
printf("%10s%10s%10s%10s\n","nomer","nazva","price","vaga");    
 while(!feof(p))
 { fread(&st,sizeof(struct prod),1,p);
 if(st.n!=0)
   printf("%10d%10s%10d%10d\n",st.n,st.nazvaProd,st.cina,st.kg);
                  
                }
                fclose(p);               
               }

Решение задачи: «Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы»

textual
Листинг программы
    if(st.n!=0)
        printf("net dannuh.\n");

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


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

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

15   голосов , оценка 4 из 5
Похожие ответы