Programación General > C/C++
Re: Leer matrices desde un archivo
adocrates:
El archivo con numeros separados, las columnas por ; (puntoycoma) y las lineas por enter :
99;23;45;67;2;etc...
65;34;87;23;83;5;etc...
etc...
Luego tienes la matriz de numeros de 50x50, un bufer, un puntero, un FILE y los indices :
--- Código: Text --- int matriz[50][50]; char buf[1024], *p; FILE *fp; int k=0,j=0; Inicializamos y abrimos el archivo (fijate que usamos el [-1] como inicializador ):
--- Código: Text --- printf("Lectura de un archivo con numeros para manejo de matriz en Lenguaje C.n"); for(k=0;k<50;k++) for(j=0;j<50;j++) matriz[k][j]=-1; k=j=0; if((fp=fopen("matriz.txt","r"))==NULL) return(printf("ERRROR NO existe archivo con numeros 'matriz.txt' !n")); Leemos un buffer y luego parseamos (detectar y cortar) con el separador ';' con p y la funcion strtok :
--- Código: Text --- while(fgets(buf,1024,fp) != NULL) { p=strtok(buf,";"); while(p!=NULL) { matriz[k][j]=atoi(p); j++; p=strtok(NULL,";"); } j=0; k++; } Finalmente imprimimos el resultado, recorriendo la matriz y preguntando por el MAXIMO (50) o el inicializador [-1] :
--- Código: Text --- for(k=0;k<50 && matriz[k][0] > -1;k++) { for(j=0;j<50 && matriz[k][j] > -1 ;j++) { printf("[%4d] ",matriz[k][j]); } putchar('n'); } fclose(fp); Y esta es la salida :
--- Código: Text ---Lectura de un archivo con numeros para manejo de matriz en Lenguaje C.[ 99] [ 23] [ 45] [ 67] [ 2] [ 65] [ 34] [ 87] [ 23] [ 83] [ 5]
Suerte y Avisa como te fue.:D
Lucia:
gracias, en fins, yo te cuento, la pena es q no te podre decir nada ata enero, y a ver si me acuedo de esa ^^U
Navegación
[*] Página Anterior
Ir a la versión completa