Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Atascado

Estas en el tema de Atascado en el foro de C/C++ en Foros del Web. Buenas señores soy nuevo en esto del C++ y venia a ver si alguien me podria ayudar. Tengo que hacer una busqueda en un archivo ...
  #1 (permalink)  
Antiguo 17/05/2012, 10:50
 
Fecha de Ingreso: mayo-2012
Mensajes: 1
Antigüedad: 12 años, 6 meses
Puntos: 0
Atascado

Buenas señores soy nuevo en esto del C++ y venia a ver si alguien me podria ayudar.
Tengo que hacer una busqueda en un archivo .dat (binario) con la estructura siguiente

typedef struct{
char nombre[80];
char variacion[100];
char movimientos[200];
}AperturaBinario;

El caso es que lo abro, lo leo, busco PERO ese no es la verdadera finalidad de la practica ya que la verdadera finalidad es Buscar, guardar la posicion del resultado y luego hacer un acceso aleatorio al archivo con seekg y ahí está mi gran dilema alguien me podria ayudar?

Aqui está la parte del código que busca y muestra por pantalla lo anteriormente buscado





#include <iostream>
#include <cstdlib>
#include <string.h>
#include <fstream>
#include <stdio.h>

using namespace std;
typedef struct{
char nombre[80];
char variacion[100];
char movimientos[200];
}AperturaBinario;


bool encontrado(string b,string a){
unsigned int encontrado=a.find(b);

if (encontrado!=string::npos){
return(true);
encontrado=a.find(b,encontrado+b.length());

}
else{
encontrado=a.find(b,encontrado+b.length());
return(false);
}
}


void leer(){
int numeros=1;
char FicheroCarga[20]="aperturas.dat";
AperturaBinario apertura;
string palabra;
apertura string contenido[3000];
cout<<"introduce una palabra"<<endl;
cin>>palabra;
ifstream fi;
fi.open(FicheroCarga,ios::in);
while(fi.good()){
fi.read((char *)&apertura,sizeof (AperturaBinario));
apertura string = apertura.nombre;
string variaciones = apertura.variacion;
if(encontrado(palabra,nombres)==true){
cout<<numeros<<" "<<nombres<<variaciones<<endl;
numeros++;
}

}
fi.close();
}

int main(){
leer();
}

Etiquetas: atascado, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:22.