Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Saltar al comienzo de una linea fseek

Estas en el tema de Saltar al comienzo de una linea fseek en el foro de C/C++ en Foros del Web. Hola, He leido sobre el comando fseek, podemos avanzar x posiciones, retroceder x posiciones, ir al comienzo o fin del fichero, PERO no he leido ...
  #1 (permalink)  
Antiguo 07/10/2013, 11:54
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 3 meses
Puntos: 0
Saltar al comienzo de una linea fseek

Hola,

He leido sobre el comando fseek, podemos avanzar x posiciones, retroceder x posiciones, ir al comienzo o fin del fichero, PERO no he leido nada sobre como retroceder al comienzo de la linea en la que nos encontramos.

Conoceis alguna forma?
Un saludo
  #2 (permalink)  
Antiguo 07/10/2013, 12:05
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Saltar al comienzo de una linea fseek

fseek no sabe de lineas.

Una idea que se me ocurre es que lleves un contador de lineas y cuando queiras retroceder una linea usas fseek para ir al inicio del archivo y luego lees n-1 lineas.

Saludos
  #3 (permalink)  
Antiguo 07/10/2013, 15:12
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Saltar al comienzo de una linea fseek

Gracias por la respuesta.

Aun así, debe de haber alguna forma más óptima. Sin necesidad de volver al inicio y re-leer todo el fichero hasta la linea desea.

Simplemente quiero retroceder la lectura al inicio de la linea en la que estoy
  #4 (permalink)  
Antiguo 07/10/2013, 17:53
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Saltar al comienzo de una linea fseek

Desde la posición en la que te encontras en el fichero podes ir char por char para atrás hasta encontrar el "\n".
  #5 (permalink)  
Antiguo 07/10/2013, 19:24
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Saltar al comienzo de una linea fseek

La pregunta ideal aqui sería mas bien. Qué intentas hacer con eso?
Muy posiblemente lo que quieres hacer no necesite de usar fseek hacia atras en un archivo.

Tal vez cargando bloqeus en memoria o incluso todo el archivo seria lo optimo. Todo depende de que es lo que realmente queiras hacer.

Saludos
  #6 (permalink)  
Antiguo 09/10/2013, 03:45
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Saltar al comienzo de una linea fseek

Efectivamente la solución estaba en ir retrocediendo hasta encontrar el caracter con el que comienzan mis líneas '<'.

Retroceder 2 -> avanzar 1 -> comparar


while (currentChar != '<')
{
seek( file, -2, SEEK_CUR );
fread (&currentChar, sizeof(currentChar), 1, file);
}



Muchas gracias

Etiquetas: comienzo, saltar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:52.