SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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
-
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. ;)
-
Supongo que lo mas "facil" sería cargarlo de golpe en memoria no?, Que se trataria de hacer alguna matriz?