• Lunes 29 de Abril de 2024, 07:15

Autor Tema:  Rellenar Una Matriz Desde Un Fichero  (Leído 1154 veces)

Mogly

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Rellenar Una Matriz Desde Un Fichero
« en: Sábado 24 de Noviembre de 2007, 15:58 »
0
Hola necesito una ayuda para pasar el contenido de un fichero que es una matriz a una matriz para poder hacer cualquier cosa con ella
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>>
  4.  
  5.  
  6. FILE *fich;
  7. int i;
  8. int matriz[5][5];
  9.  
  10. int main (int argc, char **argv){
  11.         if ( (fich = fopen(argv[1], "r")) == NULL){
  12.                 fprintf (stderr,"ERROR No se pudo abrir %s\n", argv[1]);
  13.                 exit (2);
  14.  
  15.         }
  16.         printf("cargar matriz de fichero\n");
  17.         i=0;
  18.         while (!feof(fich)){
  19.           fread(*(matriz+i),sizeof(int),5,fich);
  20.           i=i+1;
  21.         }
  22.  
  23.        
  24.         fclose(fich);
  25.  
  26. }
  27.  
  28.  
El ejemplo esta hecho para una matriz 5x5
El fichero donde esta la matriz se pasa como argumento
Agradeceria que me hecharais una mano a ver que pasa y por que el codigo que pongo no me rellena bien la matriz con los datos de fichero

este es el fichero de ejemplo
Código: Text
  1.  
  2. 4 5 6 7 8
  3. 7 9 8 6 5
  4. 3 4 1 2 2
  5. 2 3 4 5 6
  6. 6 7 9 0 1
  7. 7 8 9 0 9
  8. 3 4 7 7 8
  9.  
  10.  

Agradeceria otras sugerencias para poder solucionar este problema
Gracias.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Rellenar Una Matriz Desde Un Fichero
« Respuesta #1 en: Sábado 24 de Noviembre de 2007, 22:05 »
0
Estas leyendo el archivo, como si fuera un archivo binario, y en realidad, el archivo es de texto.

Tienes 2 opciones:

1. Crear el archivo de manera binaria, para poderlo leer de manera binaria.
2. Si utilizas archivos de texto, debes leer los datos como si fueran de texto, y hacer la conversion a int (binario).

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Rellenar Una Matriz Desde Un Fichero
« Respuesta #2 en: Lunes 26 de Noviembre de 2007, 09:46 »
0
tal como dice Profesor X, tienes que leer en modo texto , para ello, abre el fichero como "read text"

(fich = fopen(argv[1], "rt")   <- "rt"

luego para leer las filas puedes usar la funcion:

 fscanf( Handle_Fichero, "...", &v1,...);

puedes ver mejor como funciona en la doc, lo que tu querrias seria tal que:

fscanf( fich , "%d ", *(matriz+i));