SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Flais en Lunes 19 de Septiembre de 2005, 09:27

Título: Estructura De Archivos. Buscar
Publicado por: Flais en Lunes 19 de Septiembre de 2005, 09:27
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
Título: Re: Estructura De Archivos. Buscar
Publicado por: patitofeo en Martes 20 de Septiembre de 2005, 14:15
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:
Título: Re: Estructura De Archivos. Buscar
Publicado por: Flais en Sábado 24 de Septiembre de 2005, 23:13
:comp: MUCHAS GRACIAS POR LA AYUDA.. CREO QUE AHORA SI ESTA MAS CLARO