/* listado formateado del contenido de un fichero */ #include #include #include #define NMAXREGPORPAGINA 5 // Número registros mostrados por página typedef struct { char nombre[30]; int edad; int curso; int nota; } TIPOALUMNO; // Devuelve una cadena de doce caracteres con la fecha actual char * FechaActual(void ) { static char cfecha[12]; // Cadena con la fecha 01/12/2001 struct tm *sfecha; // Puntero a Estructura fecha y hora time_t tiemposg; // Tiempo en segundos desde 1970 // Obtiene el tiempo en segundos tiemposg = time(NULL); // Rellena una estructra de tipo tm a partir del tiempo actual sfecha = localtime( & tiemposg ); // Genero la cadena cfecha sprintf(cfecha,"%2d/%2d/%4d", sfecha->tm_mday,sfecha->tm_mon+1,sfecha->tm_year+1900); return cfecha; } void VerCabecera (int Npag ) { clrscr(); printf("N. %d Fecha:%s\n", Npag,FechaActual()); printf(" INFORME DE ALUMNOS\n\n"); printf("=====================================================\n"); printf(" NOMBRE EDAD CURSO \n"); printf("=====================================================\n"); } void VerPie (void ) { printf("=====================================================\n"); } void VerCampos ( TIPOALUMNO *sr ) { printf(" %-15s %3d %3d \n", sr->nombre, sr->edad, sr->curso ); } main () { FILE *fent; // Fichero int Npaginas; // Contador de paginas int numregporpag; // Número de registros por página TIPOALUMNO ralumno; fent = fopen("ALUMNOS.DAT","rb"); if ( fent == NULL ) { printf(" Error al abrir el archivo ALUMNOS.DAT "); return 1; } Npaginas = 1; VerCabecera(Npaginas); numregporpag =0; fread(&ralumno,1,sizeof(TIPOALUMNO),fent ); while ( !feof (fent) ) { if ( (numregporpag == NMAXREGPORPAGINA) ) { VerPie(); puts("\n\t--- Pulse una tecla para continuar ---"); getch(); Npaginas++; VerCabecera(Npaginas); numregporpag = 0; } numregporpag ++; VerCampos( & ralumno); fread(&ralumno,1,sizeof(TIPOALUMNO),fent ); } VerPie(); puts("\n\t------- FIN DEL INFORME ----------"); getchar(); fclose(fent); return 0; }