Menú

Mostrar Mensajes

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ú

Temas - magictheory

#1
Programación C/C++ / Problema con bucle infinito
30 Octubre 2016, 20:20 PM
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");
getchar();
gets(mat.desc);
printf("\n\tIngrese stock actual del articulo");
scanf("%d", &mat.stock);
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");
scanf("%d", &op);
}while(op!=0);
}else{
printf("\n\nError de archivo");
}
fclose(materiales);








//ACA YO CARGO EL ARCHIVO VENTAS



   int opc;

   if((archivoventa=fopen("ventas.dat","wb"))!=NULL){
do{
   printf("\n\tIngrese codigo del articulo");
scanf("%d", &ven.cod);
printf("\n\tIngrese cantidad vendida del articulo");
scanf("%d", &ven.cant);
fwrite(&ven,sizeof(ven),1,archivoventa);
printf("\n\t¿Desea registrar otra venta? [1]-Para SI // [0]-Para NO");
scanf("%d", &opc);
}while(opc!=0);
   }else{
printf("\nError de archivo");
   }
   fclose(archivoventa);
   
   
   
   
   
   
   
   
   
   
   //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);
printf("\nHola");    
        }
        rewind(materiales);
fread(&ven,sizeof(ven),1,archivoventa);
printf("\nHola2");  
   }
   }else{
   printf("\nError archivo");
   }
   fclose(materiales);
}else{
     printf("\nError archivo");
   }  
fclose(archivoventa);  
printf("\n\t\tError3");

   
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{
printf("Error");
   }
   fclose(materiales);
}





Les agradeceria si me pueden ayudar!!!!!


Mod: Los titulo deben ser descriptivos