Ver Mensaje Individual
  #6 (permalink)  
Antiguo 04/04/2015, 12:12
rdv316
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Posicionarse en el registro inicial después de una búsqueda [C]

Hola amigos.
Muchas gracias a los 2, ya conseguí lo que pretendía, luego voy a profundizar en los códigos de ambos para aprender cosas que seguramente desconozco.-
Una última ayudita, les pediría que recorran mi programita y me digan si está todo correcto o que debo corregir y que pasa si muevo el cursor más allá del último registro.-

Código:
#include <stdio.h>

typedef struct {
	char marcado;
	char ingles[30];
	char espaniol[30];
} Traductor;

int main(void){
	FILE *ptrFile;
	Traductor trad;
	long mark;
	
	if( ( ptrFile = fopen( "archivo.txt", "r" ) ) == NULL ){
		perror( "Error" );
		return 1;
	}

	// el modo r posiciona el cursor al comienzo del archivo.
	fseek (ptrFile, 1*sizeof(trad), SEEK_CUR); // mover el cursor 1 registro asía abajo.
	mark = ftell ( ptrFile ); // guardar posición actual 
	fread (&trad, sizeof ( Traductor ), 1, ptrFile ); 
	printf( "\n\n %s === %s\n\n", trad.ingles, trad.espaniol );

	fseek (ptrFile, 3*sizeof(trad), SEEK_CUR); // mover el cursor 3 registro asía abajo.
	fread (&trad, sizeof ( Traductor ), 1, ptrFile );
	printf( "\n\n %s === %s\n\n", trad.ingles, trad.espaniol );

	fseek ( ptrFile, mark, SEEK_SET );	// restaurar posición previa.
	fread (&trad, sizeof ( Traductor ), 1, ptrFile );
	printf( "\n\n %s === %s\n\n", trad.ingles, trad.espaniol );

 fclose(ptrFile);
	return 0;

}
Saludos y muchas gracias.
Daniel

Última edición por rdv316; 04/04/2015 a las 13:02