buscar registro con fseek

Iniciado por tumayy, 23 Octubre 2011, 21:57 PM

0 Miembros y 1 Visitante están viendo este tema.

tumayy

este es un segmento de mi programa
hay un fichero llamado ejemplo.txt, que tiene los siguientes registros
primero
segundo
tercero

mediante el fseek deseo buscar e imprimir el registro n que es tecleado, pero no me sale....ayuda con el codigo (las variables y el puntero a file son globales)
   


  void consulta()
     {
   int n;
        if((pf=fopen("ejemplo.txt","r"))==NULL)
            {
                printf("error");
            }
         else
         printf("numero de resgistro");
         scanf("%d",&n);
         
         fseek(pf,n*sizeof(char),SEEK_SET);

          fread(&cadena,sizeof(char),1,pf) ;
          printf("%s",cadena[4000]) ;
     }

rir3760

Honestamente con lo poco que presentas no es posible ayudarte.

Para empezar necesitamos conocer como se almacena cada registro en el archivo. Y si este lo abres en el modo texto no puedes (mas bien no deberías por detalles técnicos) utilizar fseek para encontrar un registro, en su lugar procesas el archivo linea por linea.

Mejor publica la versión mas pequeña posible de tu programa.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

tumayy

lo que me piden en el programa

MENU
1. ingresar(escribir en un fichero)
2.consultar(con fseek ir a determinado registro)
3.modificar(con fseek modificar un registro determinado)
4.mostrar(muestra todos los registros)

ayudame con este programa

Saberuneko

Creo que no lo has entendido del todo, lo que se te ha pedido, a parte de saber qué es lo que haces, es un código algo más completo.

- Con qué trabajas en el fichero? Cadenas? Estructuras?
Yo por ejemplo, creo que necesito ver lo que viene a ser la cabecera del programa, (donde declaras las variables, estructuras y sus tipos), para saber exactamente que es lo que intentas manejar en el archivo.

do-while

¡Buenas!

Otro detalle, si desconoces el tamaño del registro, poco podras hacer con fseek. Tendras que trabajar con ficheros binarios, con registros del mismo tamaño, para poder acceder a ellos de forma directa, y no sobre ficheros de texto.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!