pero ni hace igual me borra todo
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú if(inventario.cod == elim){
cual hize para borrar solo un elemento pero el problema que cuando intento borrar un elemento me borra todo los elementos del archivo y el de reporte no me muestra nada. no se que estoy haciendo mal
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
FILE *file;
FILE *tmp;
struct inven{
int cod;
char descrip[30];
int exist;
int exist_min;
int exist_max;
float precio;
int cod_provedor;
}inventario;
void crear();
void modificar();
void eliminar();
void reporte();
void menu();
void menu(){
int resp;
do{
printf("\n\t\t---------------------------------------------------");
printf("\n\t\t\t S T O R E L T E ");
printf("\n\t\t-------------------------------------------------\n\n\n\n");
printf("\t\t\t\t [1] agregar producto \n");
printf("\t\t\t\t [2] modificar un producto \n");
printf("\t\t\t\t [3] eliminar \n");
printf("\t\t\t\t [4] reporte \n");
printf("\t\t\t\t [5] salir ........ ");
printf("\n\n\t\t\t\tSelecciona: ");
resp=getchar();
switch(resp){
case '1': crear();
break;
case '2': modificar();
break;
case '3': eliminar();
break;
case '4': reporte();
break;
case '5' : exit(1);
default:
printf("opcion no validaa");
}
}
while(resp!=6);
getch();
}
int main(){
menu();
return 0;
}
void crear(){
system("cls");
int codigo = inventario.cod;
char opcion = 's';
if ((file=fopen("inventario.txt","a+"))==NULL)
printf("\n\n\n\n\t\t< < < Error de apertura de archivo inventario.dat > > >");
else{
while(opcion == 's'){
printf("\n\n CODIGO: \t%d",codigo++);
printf("\n\n PRODUCTO:\t ");
scanf("%s",&inventario.descrip);
printf("\n\n EXISTENCIA DEL PRODUCTO:\t ");
scanf("%s", &inventario.exist);
printf("\n\n PRECIO UNITARIO DEL PRODUCTO:\t ");
scanf("%s",&inventario.precio);
fwrite(&inventario, sizeof(inventario), 1, file);
printf("\n\n\n\t\t DESEAS CAPTURAR OTRO PRODUCTO [s/n] : ");
opcion = getchar();
getch();
}
}
fclose(file);
}
void modificar(){
system("cls");
int opc,i=0;
char elim[6];
printf("\nINGRESE EL CODIGO DEL PRODUCTO A MODIFICAR: ");
scanf("%s",&elim);
file = fopen("inventario.dat","r+b");
if(!file)
printf("\n Error de apertura del archivo inventario.dat\n");
else{
while (((fread(&inventario, sizeof(inventario), 1, file))!=0)&&i!=1){
//if(!strcmp(inventario.cod,elim)){
if(inventario.cod!=elim){
printf("DESCRIPCION : %s\n",inventario.descrip);
printf("EXISTENCIA : %s\n",inventario.exist);
printf("PRECIO UNITARIO :$ %s\n",inventario.precio);
printf ("\nQUE DESEA MODIFICAR: ");
printf ("\n\t\t\t1.-DESCRIPCION\n");
printf("\t\t\t2.-EXISTENCIA\n");
printf ("\t\t\t3.-PRECIO UNITARIO\n");
printf("\t\t\t4.-SALIR\n");
printf("\t\t\tDIGITA TU OPCION :");
scanf("%d",&opc);
switch (opc!=4){
case 1:
printf ("\nINGRESA LA NUEVA DESCRIPCION: ");
scanf("%s",&inventario.descrip);
break;
case 2:
printf ("\nINGRESA LA NUEVA EXISTENCIA ");
scanf("%s",&inventario.exist);
break;
case 3:
printf ("\nINGRESA EL NUEVO PRECIO UNITARIO ");
scanf("%s",&inventario.precio);
break;
}
fseek(file,sizeof(inventario),SEEK_CUR);
fwrite(&inventario,sizeof(inventario), 1, file);
i=1;
fclose(file);
}
}
}
}
void eliminar(){
system("cls");
char elim[10];
printf("\nINGRESE EL CODIGO DEL PRODUCTO PARA ELIMINAR: ");
scanf("%s",&elim);
file=fopen("inventario.dat","r+b");
tmp=fopen("inventario1.dat","wb");
if(!file)
printf("\n Error de apuertura del archivo inventario.dat\n");
else{
while(((fread(&inventario, sizeof(inventario), 1, file))!=0)){
if(inventario.cod == elim){
//fseek(tmp,sizeof(inventario),SEEK_END);
//fseek(tmp,sizeof(inventario),SEEK_CUR);
fwrite(&inventario,sizeof(inventario), 1, tmp);
fclose(tmp);
tmp=fopen("inventario1.dat","r+b");
printf ("\n\n\n\n\n\n\n\n\n\n\n EL PRODUCTO SE HA ELIMINADO CORRECTAMENTE \n");
printf ("\n OPRIMA CUALQUIER TECLA PARA CONTINUAR");
getch();
}
}
fclose(file);
fclose(tmp);
system("del inventario.dat");
system("ren inventario1.dat inventario.dat");
}
}
void reporte (){
system("cls");
int i;
FILE *invent;
invent = fopen("inventario.dat", "r");
if(invent == NULL)
{
printf("\nNo existe archivo");
}
fread(&inventario, sizeof(struct inven), 20, invent);
printf("------------------------------------------------------------------\n");
printf("CODIGO DESCRIPCION\t\tEXISTENCIA\tPRECIO UNITARIO \n");
printf("------------------------------------------------------------------\n");
while(!feof(invent)){
printf(" %s %s\t\t %s\t\t %s \n",inventario.cod,inventario.descrip,inventario.exist,inventario.precio);
fread(&inventario, sizeof(struct inven), 20, invent);
}
fclose(invent);
getch();
}