Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/11/2011, 22:44
Dtc
 
Fecha de Ingreso: marzo-2011
Ubicación: México
Mensajes: 39
Antigüedad: 13 años, 10 meses
Puntos: 1
Pregunta Avanzar a una linea específica de un archivo .txt

Saludos, mi duda es la siguiente:
Tengo un archivo .txt en el cual guardo una cadena de caracteres por cada linea.

Según sé, fseek puede mover el cursor del fichero, pero solo se mueve por letras, así que si escribo esto:

fseek(fp, 10, SEEK_SET);

El cursor se moverá 10 letras después del inicio del archivo "fp".

Si yo tengo en un fichero .txt lo siguiente:

Linea1
Linea2
Linea3
Linea4
Linea5
linea6
linea7
linea8

¿Como puedo hacer que el puntero del archivo se mueva hasta la sexta linea (linea6), sin importar el tamaño de la linea (el contenido de esta puede variar, así que basar el movimiento en la medida de esta no funcionará)?

He intentado esta función:

Código C:
Ver original
  1. void avanzar(int linea)
  2. {
  3. fseek(fp, 0, SEEK_SET);
  4. for (i=0; i=(linea-1);i++)
  5. {    
  6. while (fgetc (fp) != '\n');
  7. }
  8. }

Y en teoría, si yo la invoco de esta manera:

Código C:
Ver original
  1. avanzar(3);

El cursor del archivo debería estar en el inicio de la tercera linea, sin importar en que lugar estaba antes de que la función fuera invocada, pero al compilar no me aparece nada, lo cual me ha dado a entender que hace un bucle infinito, pero no comprendo por qué.

Saludos y gracias de antemano
__________________
La Web del Dtc
http://www.dtcsrni.tk
DtcSrni Technologies
http://technologies.dtcsrni.tk