Hola a toda la comunidad, les deseo prospero dia!!
Resulta que tengo un codio que me produce un bucle infinito y las verdad no se porque me
produce eso. Lo que hago es algo simple. Cargo dos archivos y en uno de los archivos quiero modificar el stock, osea actualizarlo, nada mas. A continuacion les paso el codigo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct materiales{
int codart, stock, stockmin;
char desc[20];
float precio;
};
struct ventas{
int cod,cant;
};
//ACA YO CARGO EL ARCHIVO AMTERIALES
main(){
FILE *materiales;
FILE *archivoventa;
fpos_t pos;
int op;
struct materiales mat;
struct ventas ven;
if((materiales
=fopen("materiales.dat","wb"))!=NULL
){ do{
printf("\n\tIngrese el codigo del articulo"); scanf("%d", &mat.
codart); printf("\n\tIngrese un breve descripcion"); printf("\n\tIngrese stock actual del articulo"); printf("\n\tIngrese stock minimo"); scanf("%d", &mat.
stockmin); printf("\n\tPor utimo ingrese precio"); scanf("%f", &mat.
precio); fwrite(&mat
,sizeof(mat
),1,materiales
); printf("\n\t¿Desea ingresar otro articulo? [1]-para SI // [0]-Para NO"); }while(op!=0);
}else{
printf("\n\nError de archivo"); }
//ACA YO CARGO EL ARCHIVO VENTAS
int opc;
if((archivoventa
=fopen("ventas.dat","wb"))!=NULL
){ do{
printf("\n\tIngrese codigo del articulo"); printf("\n\tIngrese cantidad vendida del articulo"); fwrite(&ven
,sizeof(ven
),1,archivoventa
); printf("\n\t¿Desea registrar otra venta? [1]-Para SI // [0]-Para NO"); }while(opc!=0);
}else{
}
//ACA ES DONDE ESTA LA FALLA
if((archivoventa
=fopen("ventas.dat","rb"))!=NULL
){ if((materiales
=fopen("materiales.dat","r+b"))!=NULL
){ fread(&ven
,sizeof(ven
),1,archivoventa
); while(!feof(archivoventa
)){ fread(&mat
,sizeof(mat
),1,materiales
); while(!feof(materiales
)){ if(mat.codart==ven.cod){
mat.stock=mat.stock-ven.cant;
printf("\n\nEl stock entonces quedo en %d", mat.
stock); fseek(materiales
, -1*(sizeof(mat
)),SEEK_CUR
); fwrite(&mat
,sizeof(mat
),1,materiales
); }
fread(&mat
,sizeof(mat
),1,materiales
); }
fread(&ven
,sizeof(ven
),1,archivoventa
); }
}else{
}
}else{
}
if((materiales
=fopen("materiales.dat","rb"))!=NULL
){ fread(&mat
,sizeof(mat
),1,materiales
); while(!feof(materiales
)){ printf("\n\nEl codigo de articulo es %d",mat.
codart); printf("\n\nEl stock actualizado quedo asi %d",mat.
stock); fread(&mat
,sizeof(mat
),1,materiales
); }
}else{
}
}
Les agradeceria si me pueden ayudar!!!!!
Mod: Los titulo deben ser descriptivos