Para esta actividad puedes partir del código que has
escrito para el ejercicio fread_fixed_integers.c
que leía enteros desde un fichero. Copia
ese código en la carpeta fread_variable
de tu
carpeta compartida.
Sección 3 de Lectura y escritura de ficheros
Los ficheros en Linux son una secuencia de bytes. Si en un
fichero se almacenan datos de un tamaño arbitrario, nos encontramos con el
problema de saber la cantidad de datos a leer para pasárselo como parámetro
a la función fread
. Hay varias formas de solventar esto, pero
una de ellas consiste en anteponer a los datos un entero con su tamaño. De
esta forma, el primer dato que se lee es el entero que indica cuántos datos
están almacenados a continuación. La siguiente figura muestra esta técnica
para un fichero con 5 enteros.
TAMANHO|ENTERO_0|ENTERO_1|ENTERO_2
Modifica el programa de fread_fixed_integers.c, llamándole
fread_variable_integers.c
para que lea los enteros de un
fichero binario con esta estructura (números en binario almacenados
en posiciones consecutivas precedidos por un entero con el tamaño):
Tu código deberá leer el tamaño y después pedir memoria con
la función malloc
para el array de enteros. No olvides utilizar
la llamada a la función free
para liberar la memoria antes de
que termine el programa.
Prueba el programa con los siguientes ficheros
fich_10_enteros
y
fich_enteros
que encontrarás en la sub-carpeta
fread_variable
de tu carpeta compartida.
Sube el programa a la carpeta
fread_variable
de tu espacio de trabajo en
Subversion.