/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Uso del fseek y busqueda binaria

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
radicaled



Registrado: 07 Nov 2006
Mensajes: 26

MensajePublicado: 02/11/2007 3:02 am
Título: Uso del fseek y busqueda binaria

Gente, estoy haciendo una busqueda binaria sobre un archivo de texto. Como no lo puedo leer secuencialmente, guarde los indices y accedo a traves de un fseek a la palabra guardada en ese fseek.
Ahora, yo tengo varias palabras con el mismo comienzo, por ejemplo "aba", "abatimiento", etc y quiero encontrar la primera, pero estoy teniendo problemas con el uso del fseek y tambien con la recursividad.
Alguien me podria dar una mano con este quilombo. Les dejo el codigo para que sepan de que estoy hablando.

Gracias

Código:

int bbin(char palabra[50], int inicio, int final){
   char dicc[] = "lugares.txt";
   int medio;
   char leida[50];
   
   FILE *lugar;

   printf ("Entro con un valor inicial %d, y uno final %d\n", inicio, final);

   if ((dic = fopen(lugar,"r+")) == NULL){
      printf("Hubo un error en la apertura del archivo\n");
      fclose(lugar);
   }

   medio = (final + inicio) / 2;
   if ( inicio > final ) return -1;
   
   printf ("El medio es %d\n",medio);
   fseek(dic, medio*50, 0);
   if (!fscanf(dic, "%s",leida)){
      printf("No se puede leer la linea del archivo\n");
      fclose(dic);
   }
   printf ("La palabra leida es %s\n", leida);
   if(!strncmp (palabra, leida, strlen(palabra)))
      return medio;
   else if( strncmp (palabra, leida, strlen(palabra)) < 0)
      return bbin(palabra, inicio, medio-1);
   else if( strncmp (palabra, leida, strlen(palabra)) < 0)
      return bbin(palabra, medio+1, final);
}
Volver arriba
radicaled



Registrado: 07 Nov 2006
Mensajes: 26

MensajePublicado: 02/11/2007 4:10 am
Título:

Me di cuenta de algo que no sabia del fseek,
fseek( f, offset, from );

aparte de la varias varianes que tiene el from, el offset es un numero de bytes.

Quisiera saber si hay alguna funcion en C que lea de una determinada linea de un archivo de texto

Yo tengo por ejemplo:

a
aba
abac
abbee
etc

y quiero leer la 3 linea. Se puede hacer de alguna forma eso???

Gracias
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com