Matrices dinámicas en C

Iniciado por thekill01, 19 Mayo 2012, 22:39 PM

0 Miembros y 1 Visitante están viendo este tema.

thekill01

Hola amigos, la verdad es que soy nuevo en la programación en C y tengo el siguiente problema.

tengo que leer un archivo de texto y quiero guardar los datos en una matriz. El problema es que la cantidad de columnas si sé cuantas son, pero la cantidad de filas no lo sé, ya que este archivo cambia de tamaño cada cierto tiempo.
Quiero guardar los datos en una matriz dinámica, de forma que leo este archivo de texto y guardo los datos en una matriz. Así de acuerdo a la cantidad de información que hay en el archivo sea la cantidad de filas de la matriz. Y no sé como implementar esto.
Espero que me puedan ayudar
Saludos
Mis disculpas si este tema ya está previamente, pero busqué y no lo encontré.

exel

 Si sabes manejar memoria dinamica (malloc, etc) arreglos y archivos pues ya lo tendrias arreglado.

Cuando ampieces a leer el archivo, sabras que debes obtener la primera fila, con la cantidad de columnas que ya dices conocer. Luego obtendras la segunda fila, y la tercera, etc. Hasta llegar al fin de archivo con la funcion feof(puntero a archivo) que indica que ya no hay mas datos en el archivo.

Por utilidad, el Sistema Operativo no dejara que otro programa utilize el archivo hasta que tu programa termine de utilizarlo.

Aberroncho

La reserva dinámica de memoria en C (estándar ANSI) se hace con las funciones malloc() y free(). La primera te da un puntero a la memoria y la segunda te libera la memoria.


Se me ocurre que puedes hacerlo de dos formas:

  • Cuentas las líneas del ficheros y haces una única reserva de memoria para todo el array
  • Haces una lista enlazada en la que cada nodo es una fila del fichero vas reservando la memoria línea a línea y añadiéndola a tu lista enlazada

"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)

icoheed

La forma mas fácil para salir del problema es crear una variable que cuente los datos leídos y en base a esa dentro de un ciclo for vas aumentando los renglones. Hacerlo de forma segura y formal será con un feof o malloc.

Saludos.