[ Foro de C ]
Estructura del Archivo Binario:
El archivo binario sigue una estructura específica con un encabezado que proporciona información sobre las longitudes de las tres secciones: Estudiantes, Cursos y Matrículas. El formato del encabezado es el siguiente:
Formato del Encabezado
El encabezado del archivo se formatea de la siguiente manera:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Magic String (0xaaae) | Student Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Student Count (cont.) | Course Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Course Count (cont.) | Enrollment Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Enrollment Count (cont.) | Data …
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Cadena Mágica: 16 bits
Valor predefinido de 0xaaae
Cantidad de Estudiantes: 32 bits
Número de estudiantes en el archivo en formato little endian
Cantidad de Cursos: 32 bits
Número de cursos en el archivo en formato little endian
Cantidad de Matrículas: 32 bits
Número de matrículas en el archivo en formato little endian
Sección de Estudiantes
Inmediatamente después del encabezado del archivo, se enumeran los registros de estudiantes. Los registros de estudiantes están formateados de la siguiente manera. Se almacenan uno detrás del otro en el archivo sin relleno entre registros. El número total de registros de estudiantes se especifica en el encabezado del archivo.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Student ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|G| Rsrvd | Student Name |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Student Name (cont.) [5 times] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Age |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ID del Estudiante: 32 bits
Identificador único del estudiante
Banderas: 8 bits
La bandera F es 1 si el estudiante es femenino y 0 si el estudiante es masculino. La bandera G es 1 si el usuario es estudiante de posgrado y 0 en caso contrario.
Nombre del Estudiante: 23 bytes
Nombre del estudiante en formato ASCII
Edad del Estudiante: 32 bits
Edad del estudiante como un número entero de 32 bits en formato little endian
Sección de Cursos
Inmediatamente después de la Sección de Estudiantes, se enumeran los registros de cursos. Los registros de cursos están formateados de la siguiente manera. Se almacenan uno detrás del otro en el archivo sin relleno entre registros. El número total de registros de cursos se especifica en el encabezado del archivo.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Course ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Course Name |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Course Name (cont.) [7 times] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Credit Hours |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ID del Curso: 32 bits
Identificador único del curso
Nombre del Curso: 32 bytes
Nombre del curso en formato ASCII
Horas de Crédito: 32 bits
Número de horas de crédito del curso como un número entero de 32 bits en formato little endian
Sección de Matrículas
Inmediatamente después de la Sección de Cursos, se enumeran los registros de matrículas. Los registros de estudiantes están formateados de la siguiente manera. Se almacenan uno detrás del otro en el archivo sin relleno entre registros. El número total de registros de estudiantes se especifica en el encabezado del archivo.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Student ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Course ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Year |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Semester |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ID del Estudiante: 32 bits
Identificador único del estudiante
ID del Curso: 32 bits
Identificador único del curso
Año: 32 bits
El año en que el estudiante se matriculó en el curso como un número entero de 32 bits en formato little endian
Semestre: 32 bits
El semestre en el que el estudiante se matriculó en el curso como un número entero de 32 bits en formato little endian
Tareas
Tarea 1: Encontrar Estudiantes por Rango de Edad (20%)
Tarea:
Implementa un programa en C que lea el archivo binario e imprima los nombres, edades y géneros de todos los estudiantes dentro de un rango de edades. El rango de edades y el nombre del archivo binario se proporcionarán como argumentos de línea de comandos. El filtro de edades debe incluir los argumentos de límite superior e inferior.
Salida de Ejemplo:
Argumentos de Línea de Comandos:
- Argumento 1: Nombre del archivo binario (por ejemplo, "sample_data.bin")
- Argumento 2: Edad mínima
- Argumento 3: Edad máxima
Suposiciones:
- La edad mínima y máxima son números enteros positivos.
- La edad mínima es menor o igual a la edad máxima
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)