resulta que tengo que coger la información de un fichero .dat con la información de una matriz dinámica.
Lo primero que debes indicar es como esta almacenada la información en el archivo de datos ya que ello decide que funciones utilizar para la lectura (fread o fscanf). Supongo es un archivo de texto con el formato:
3 4
0.0 1.0 2.0 3.0
10.0 11.0 12.0 13.0
20.0 21.0 22.0 23.0
Los dos primeros valores son el numero de filas y columnas seguidos de cada uno de los valores, texto plano sin chiste. Si es de otra forma debes dar un ejemplo sobre como los guardas.
En cuanto al programa lo primero que debes hacer es evitar el uso de gets y fflush(stdin), las razones se indican en el tema
|Lo que no hay que hacer en C/C++. Nivel basico|.
Tampoco puedes concluir, si la llamada a fopen falla, que el archivo no existe ya que la mentada función puede fallar por otras razones (falta de privilegios, falla catastrófica, etc.).
Con esto:
matriz
= (tMatriz
*) malloc( 20 * sizeof(tMatriz
) );
Reservas memoria para veinte matrices, ¿Estas seguro de leer ese numero del archivo? Y en C las conversiones explicitas al tipo apropiado de funciones como malloc, calloc y para el caso
cualquier función que retorne un "void *" no son necesarias y no se recomiendan (por ejemplo si no incluyes el encabezado <stdlib.h> esa conversión puede terminar reventando al programa).
Y una matriz (punteros incluidos) no puedes simplemente leerla así del archivo:
/* Leer un maximo de 20 estructuras *punteros incluidos* */
cantidad
= fread(matriz
, sizeof(tMatriz
), 20, fichero
);
/* El numero de filas y columnas de la primera matriz es */
printf("%d\t%d", matriz
->c
, matriz
->f
); //Basura
De nuevo la forma correcta para leer el numero de filas, columnas y cada valor depende del formato del archivo de datos. Danos un ejemplo.
Un saludo