SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Minerdi en Jueves 28 de Febrero de 2008, 23:49

Título: Invertir Lineas De Un Fichero
Publicado por: Minerdi en Jueves 28 de Febrero de 2008, 23:49
Hola :), estoy comiendome la cabeza con un programa, unicamente ha de coger un fichero invertir las lineas y sacarlas por pantalla, es decir que la primera linea seria la ultima y la ultima seria la primera, pero no encuentro la mejor forma para lograrlo.

No se si fseek me serviría, me podeis aconsejar un poco sobre el tema?

Gracias :P
Título: Re: Invertir Lineas De Un Fichero
Publicado por: Amilius en Viernes 29 de Febrero de 2008, 20:36
Pues la forma más directa es cargar en memoria el archivo, leyendo linea por linea y creando una lista enlazada en "reversa". Luego mostrarlas en pantalla siguiendo el orden de la lista.

Nota: Como es un archivo de texto se leen secuencialmente y se pueden leer linea por linea detectando los caracteres de saltos de linea.

La función fseek no te posicionará en el archivo por lineas, sino por bytes. Y si quieres saber donde están los saltos de linea de todas formas tendrás que leer todo el archivo.

Ahora o bien lees varias veces el archivo por partes para ahorrar memoria y cargar en memoria sólo una linea a la vez (por eso de mostrar el archivo en forma invertida), o lees todo el archivo de texto y lo almacenas en memoria. Lo interesante sería un algoritmo que te permita hacer esto sin tener que poner todo el archivo en memoria o tener que leer varias veces el archivo.  ;)
Título: Re: Invertir Lineas De Un Fichero
Publicado por: Minerdi en Viernes 29 de Febrero de 2008, 23:46
Supongo que lo mas "facil" sería cargarlo de golpe en memoria no?, Que se trataria de hacer alguna matriz?