• Miércoles 6 de Noviembre de 2024, 00:27

Autor Tema:  Estructura De Archivos. Buscar  (Leído 1150 veces)

Flais

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Estructura De Archivos. Buscar
« en: Lunes 19 de Septiembre de 2005, 09:27 »
0
HOLA  :P  SOY PRINCIPIANTE EN ESTO DE PROGRAMAR Y TENGO UN PEQUEÑO PROBLEMA HICE UN CODIGO EN C. PARA CREAR UN ARCHIVO. ALMACENAR Y MOSTRAR.. AHORA ESSTOY EN BUSCAR. PERO TENGO PROBLEMAS.. NO SE QUE ME FALTA SEGUN YO ESTOS SON LOS PASOS
SOLICITAR NOMBRE A BUSCAR
ABRIR ARCHIVO
HACER CICLO WHILE !=eof
   leer registro
   comparar las cadenas
   regresar informacion. si o no se encontro.. aqui esta el codigo.. ojala puedan ayudarme

if(opc==3) /*BUSCAR*/
{
   printf("Dame el nombre a buscar");
   scanf("%s",&x.buscar);
   fd=open("dato.txt",0);
        if(fd<0)
      printf("\n NO EXISTE ARCHIVO");
 else
 do
        while(!eof(fd))

   i=0;
   do
   {
   read(fd,&x.nombre,1);
     if(x.nombre !='|'&&x.nombre!='\n'&&!eof (fd))
   i++;
      else
         break;
   }
   while (x.nombre[i-1]!='|'&&x.nombre[i-1]!='\n'&&!eof (fd));
   }
   if(strcmp(x.nombre,x.buscar)==0)
    {
   x.nombre='\0';
   printf("\n Nombre:");
   write (1,&x.nombre,i);
    }
 else {
   printf("NO SE ENCONTRO EL Registro");
   close (fd);
   getch();
   }
 }

gracias

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Estructura De Archivos. Buscar
« Respuesta #1 en: Martes 20 de Septiembre de 2005, 14:15 »
0
Bueno, no se si me equivoco en algo pero...

¿esto que es?

Código: Text
  1.  
  2.  do
  3. while(!eof(fd))
  4.  
  5.  

no tiene sentido, es un bucle que no hace nada y que te dejará el programa colgado si el fichero está vacio.

Según veo yo el codigo, solo comprobaras el primer registro, ya que no tienes realmente creado un bucle.

Cuando encuentres un caracter de separacion '|' o '\n' compararas el nombre leido.

Código: Text
  1.  do
  2. {
  3. read(fd,&x.nombre[i],1);
  4. if(x.nombre[i] !='|'&&x.nombre[i]!='&#092;n'&&!eof (fd))
  5. i++;
  6. else
  7. break;
  8. }
  9. while (x.nombre[i-1]!='|'&&x.nombre[i-1]!='&#092;n'&&!eof (fd));
  10. }
  11. if(strcmp(x.nombre,x.buscar)==0)
  12.  

si acertaste te mostrara el nombre, sino te dira q no lo encontro.

Creo q lo que buscas es algo mas parecido a esto

Código: Text
  1.  
  2. Do{
  3.  
  4.     [bucle q compara caracter a caracter buscando '|' o '&#092;n']
  5.     [comparacion de nombres]
  6.                    {si aciertas
  7.                            [imprimes el nombre y escribes en el registro]
  8. }While (se llegue al final del archivo)
  9.  
  10.  

Espero que lo entiendas. Mira bien como están construidos los bucles en tu codigo que no están bien.

Si te queda alguna duda, ya sabes...

un saludo :hola:

Flais

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Estructura De Archivos. Buscar
« Respuesta #2 en: Sábado 24 de Septiembre de 2005, 23:13 »
0
:comp: MUCHAS GRACIAS POR LA AYUDA.. CREO QUE AHORA SI ESTA MAS CLARO