Título: duda urgente sobre vector Publicado por: Yenifer22 en 17 Febrero 2022, 12:35 pm Hola,
Alguien me puede decir que esta mal en este codigo pues la lista al final esta llena en todas sus posiciones con el valor de la ultima fila del file. Código:
Título: Re: duda urgente sobre vector Publicado por: K-YreX en 17 Febrero 2022, 22:01 pm Es sencillo y complejo a la vez, veamos:
(Voy a dar por supuesto que tienes nociones básicas sobre punteros) Aquí tengo mi lista en la que voy a guardar punteros char (char*): Código: lista = [] // la lista esta vacia Ahora creo el puntero 'linea' y le asigno un espacio de 5 caracteres (pongo 5 para simplificarlo más): Código: linea = [_, _, _, _, _] // linea apunta a la direccion de memoria 0x1 (por ejemplo) Vamos a leer la primera línea del fichero: "Hola" y lo guardamos en 'linea' (recordemos: está en memoria 0x1): Código: linea = [H, o, l, a, \0] // Podemos obviar el \0 Código: lista = [linea] Ahora leemos la segunda línea del fichero "Mundo" y lo guardamos en 'linea': Código: linea = [M, u, n, d, \0] // UPS! No cabe (no importa porque fgets() lo soluciona solito) Código: lista = [linea, linea] Y ahora te muestro ambos elementos de la lista: Código: Elemento 0 -> Vamos a 0x1 y tenemos: [M, u, n, d, \0] Parece que el "Hola" ha desaparecido (y así es). Para solucionar esto tienes que reservar memoria para cada elemento que insertes en la lista para que cada uno esté en un espacio de memoria diferente y no se pisen unos elementos con otros Esquematizado sería: Código: MIENTRAS !fin(fichero) HACER Y cuando tu programa termine tendrás que liberar toda la memoria de la lista. Un par de consejos extra:
Código
|