Título: Ayuda con programa en C (archivo binario) Publicado por: anaceci21 en 28 Mayo 2013, 23:08 pm Tengo el siguiente problema... este es mi código para ingresar unas calificaciones y que te muestre el promedio, cuando lo ingreso si lo guarda en el archivo y hasta puedo ver lo que contiene eligiendo la segunda opción del menú. El problema es cuando cierro el ejecutable y vuelvo a ejecutarlo y le doy leer, se traba. ¡Ayuda!
#include <stdio.h> struct calificaciones { int calificaciones[13]; float promedio; }; typedef struct calificaciones *ap_calificaciones; void escribir_registro(FILE *arch, ap_calificaciones p, ap_calificaciones inicio) { int calif,i,k; float promedio=0; p=(ap_calificaciones) malloc (sizeof(struct calificaciones)*31); for (i=22,inicio=p;i<25;i++,p++) { printf("\n PROGRAMA #%d",i+1); for(k=0;k<13;k++) { printf("\n Criterio #%d",k+1); printf("\n Calificacion: "); scanf("%d",&calif); //validacion if(calif<-1 || calif>5) { do { printf("ERROR: calificacion invalida, vuelva a ingresar la calificacion: "); scanf("%d",&calif); }while(calif<-1 || calif>5); } p->calificaciones[k]=calif; if(p->calificaciones[k]!=-1) promedio=promedio+p->calificaciones[k]; } p->promedio=promedio*100/65; promedio=0; printf("\n\n\n PROMEDIO PROGRAMA #%d: %.2f \n\n\n",i+1,p->promedio); fwrite(&p,sizeof(p),1,arch); } system("pause"); system("cls"); } void leer_registro(FILE *arch, ap_calificaciones p, ap_calificaciones inicio ) { int i=1; float promedio_general=0, promedio_final; int tamanio=sizeof(p); rewind(arch); while (fread (&p, tamanio, 1, arch)!= 0 ) { promedio_general=promedio_general+p->pro… printf("\n\n\n\n PROGRAMA #%d\n Promedio: %.2f",i+22,p->promedio); i=i+1; } promedio_final=promedio_general/3; printf("\n\n\n\n\n\n PROMEDIO GENERAL: %.2f\n\n\n ",promedio_final); system("pause"); system("cls"); } |