Problema De Lectura Y Paso A Matriz

Iniciado por ZedGe, 22 Junio 2012, 18:34 PM

0 Miembros y 2 Visitantes están viendo este tema.

ZedGe

Tengo un código que lee un TXT con la siguiente info

389 Santiago Iquique 25000
107 Santiago Concepcion 30000

el código es este



#include <stdio.h>
#include <stdlib.h>

void lectura(){
       FILE *archivo;   
       archivo = fopen("prueba.txt","r");   

       char *bloques[2][5]; //Matriz Que Contendra Todos Los Elementos
       char nombre[50]; //Variable que leerá cada palabra
       int i=0,j=0; //i: Variable Para Recorrer Las Filas De La Matriz
                     //j: Variable Para Recorrer Las Columnas De La Matriz

      while (feof(archivo) == 0){ //Mientras Queden Datos Que Leer...
                   while (2 > i){
                          while (j < 5){
                                 fscanf(archivo, "%s", nombre);
                                 bloques[i][j] = nombre; 
                                 j++; //Se Incrementa j
                          } 
                          i++;
                          j=0;
                  } 
          }
          //NO IMPRIME BIEN
          printf(bloques[0][0]);
          getch();
fclose(archivo); //Se Cierra El Fichero
}

int main()
{   
        lectura();
        return 0;
}



El problema es que fuera del while cuando deseo imprimir nuevamente los datos que lei solo me imprime el ultimo dato leido, es lenguaje en C programo en devc+++

0xDani

¿Porque declaras el puntero a FILE en la funcion lectura? Creo que seria mejor que le pasases como parametro asi void lectura(FILE* archivo) y despues operas con el archivo igualmente. Y creo que no lee el archivo porque a fscanf le tienes que pasar la variable por referencia (&nombre).

Saludos ;D
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

ZedGe

Lo de la funcion lectura esta bien, = después tengo que cambiarlo y pasarselo al main como parametro, pero aun que le ponga &nombre al fscanf la matriz no avanza, si hago esto



while (j < 4){
                                 fscanf(archivo, "%s", &nombre);
                                 bloques[i][j] = nombre; 
                                 printf(bloques[0][0]);
                                 j++; //Se Incrementa j
                          } 


deberia imprimir el mismo bloque[0][0] 4 veces, pero este valor va cambiando

0xDani

¿Te refieres a que al imprimirlo te salen cuatro valores distintos?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

ZedGe

claro me imprime lo que va leyendo.... como si la matriz fuera avanzando pero solo imprimo la posición

0xDani

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

ZedGe

emm ese que puse al principio es el código entero, es solo 1 funcion

0xDani

Ya pero es que en el codigo que has puesto despues estaba modificado, pon lo que has ejecutado.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

ZedGe


#include <stdio.h>
#include <stdlib.h>

void lectura(){
       FILE *archivo;   
       archivo = fopen("prueba.txt","r");   

       char *bloques[2][5]; //Matriz Que Contendra Todos Los Elementos
       char nombre[50]; //Variable que leerá cada palabra
       int i=0,j=0; //i: Variable Para Recorrer Las Filas De La Matriz
                     //j: Variable Para Recorrer Las Columnas De La Matriz

      while (feof(archivo) == 0){ //Mientras Queden Datos Que Leer...
                   while (2 > i){
                          while (j < 5){
                                 fscanf(archivo, "%s", nombre);
                                 bloques[i][j] = nombre; 
                                 printf(bloques[0][0])
                                 j++; //Se Incrementa j
                          } 
                          i++;
                          j=0;
                  } 
          }
          //NO IMPRIME BIEN
          printf(bloques[0][0]);
          getch();
fclose(archivo); //Se Cierra El Fichero
}

int main()
{   
        lectura();
        return 0;
}

0xDani

Pues solo te puedo decir que lo he compilado y no me funciona :-\
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM