/* listado formateado del contenido de un fichero */ #include #include typedef struct { char nombre[30]; int edad; int curso; int nota; } TIPOALUMNO; TIPOALUMNO ralumno; main () { FILE *fent; // Fichero int aprobados = 0; int suspensos = 0; int tnotas[10]; // Contados para cada nota int i; fent = fopen("ALUMNOS.DAT","rb"); if ( fent == NULL ) { printf(" Error al abrir el archivo ALUMNOS.DAT "); return 1; } for (i=0;i<10;i++) { tnotas[i] = 0; } fread(&ralumno,1,sizeof(TIPOALUMNO),fent ); while ( !feof (fent) ) { ( ralumno.nota >= 5 )? aprobados++ : suspensos++; // Supongo que la nota esta entre 1 y 10 // Si no es así el programa podría fallar al // salirse el valor de la posiciones válidas de la tabla i = ralumno.nota; tnotas[i - 1]++; // i -1 Por que la tabla va de 0 a 9 fread(&ralumno,1,sizeof(TIPOALUMNO),fent ); } printf("-- RESUMEN DE NOTAS --\n\n"); printf(" - Aprobados :%d \n",aprobados); printf(" - Suspensos :%d \n",suspensos); printf(" - NOTAS: \n"); for ( i=0;i<10;i++ ) { printf(" %2d:%d \n",i+1,tnotas[i]); } getchar(); fclose(fent); return 0; }