Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 25-11-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Creo que te complicas mucho la vida, yo usaria archivos con registros de tamaño fijo.
En este ejemplo puedes ver como crear un archivo secuencial y lo relleno y luego busco en el tanto por nombre como por numero de registro. Es mucho mas sencillo de manejar.

Código PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TAM_MAX_PALABRA 50
int main(int argccharargv[])
{
   
struct{
      
char palabra[TAM_MAX_PALABRA];
      
int index;
   }
registro;

   
char nombre[TAM_MAX_PALABRA];
   
int cantidadxindiceencontradanreadsalir=0;
   
char caracter;
   
FILE *archivo;

   
//ZONA DONDE CREO EL ARCHIVO SECUENCIAL Y LO RELLENO CON LOS REGISTROS
   
printf("\nIndique el numero de palabras a usar: ");
   
scanf("%d",&cantidad);

   
archivo fopen("prueba.txt","w"); //Abro el fichero para escritura

   
if(archivo != NULL){ //Si el archivo se ha abierto correctamente...
      
for(0cantidadx++){
         
printf("\n\nIntroduce el nombre del registro %d: "x);
         
fflush(stdin); //Limpiamos el buffer de entrada
         
fgets(registro.palabra,TAM_MAX_PALABRA,stdin); //es mas recomendable ya que permite guardar cadenas con espacios
         
printf("\nIntroduce el numero del registro %d: "x);
         
scanf("%d",&registro.index);

         
fwrite(&registro,sizeof(registro),1,archivo); //Guardo el registro
      
}
      
fclose(archivo); //Cierro el archivo
   
}

   
//ZONA DONDE BUSCO EL REGISTRO DESEADO
   
archivofopen("prueba.txt","r");

   if (
archivo== NULL){
      
printf("\nEl archivo no se encuentra.\n");
   }else{
      do{
         
//Mostramos el menú y esperamos hasta que se elija una opcion correcta
         
system("CLS"); //Limpiamos la pantalla
         
printf("\n\nELIGE EL TIPO DE BUSQUEDA\n");
         
printf("-------------------------\n\n");
         
printf("\t1.Por indice\n");
         
printf("\t2.Por nombre\n");
         
printf("\t3.Salir\n\n");
         
printf("\tOpcion: ");
         
scanf("%d",&x);

         switch(
x)
         {
            case 
1:
               
printf("\nElige el indice a buscar: ");
               
scanf("%d",&indice);
               break;

            case 
2:
               
printf("\nElige el nombre a buscar: ");
               
fflush(stdin); //Limpiamos el buffer de entrada
               
fgets(nombre,TAM_MAX_PALABRA,stdin); //es mas recomendable ya que permite guardar cadenas con espacios
               
break;

            case 
3:
               
salir 1;
               break;

            default:
               
printf("\n\tValor introducido incorrecto.");
               
printf("\n\tPulse Intro para continuar.");
               
fflush(stdin); //Limpiamos el buffer de entrada
               
getchar(); //Esperamos a que se pulse intro
         
}
      }while(
|| 3); //Si elegimos una opcion correcta saldremos del bucle

      
if(salir == 0){
         
encontrada 0;

         while (!
feof(archivo)){
            
nread fread(&registro,sizeof(registro),1,archivo);

            if(
nread == 0//Si no lee mas registros es porque llegamos al final
               
break;

            switch(
x)
            {
               case 
1:
                  if(
indice == registro.index){
                     
printf("\nPalabra encontrada: %s"registro.palabra);
                     
encontrada 1;
                  }
                  break;

               case 
2:
                  if(
strcmp(nombreregistro.palabra) == 0){
                     
printf("\nPalabra encontrada. Registro: %d"registro.index);
                     
encontrada 1;
                  }
                  break;
            }
         }

         if(
encontrada == 0)
            
printf("\nPalabra no encontrada.");

         
fclose(archivo); //Cerramos el archivo
         
printf("\n\n");
         
system("PAUSE");
      }
   }
   return 
0;
}
//--------------------------------------------------------------------------- 
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar un DBGrid como archivo *.dbf richisaurio Conexión con bases de datos 13 25-01-2013 17:53:32
¿como guardar un archivo de texto como ANSI? JXJ Varios 2 09-09-2011 21:26:29
Posible Guardar QuickReport Como Archivo jirbert Varios 5 24-07-2008 10:27:40
Como guardar un TChart en archivo gif? crespopg Gráficos 1 04-05-2007 23:18:26
Como guardar un objeto en un archivo ? cmurua71 OOP 7 18-11-2005 21:26:30


La franja horaria es GMT +2. Ahora son las 21:10:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi