Foros del Web » Programación para mayores de 30 ;) » Programación General »

C++ Ayuda!!!

Estas en el tema de C++ Ayuda!!! en el foro de Programación General en Foros del Web. -Con respecto a mi problema o mas bien experimento e declarado unos struct ejemplo: typedef struct { char Nombre[34]; char apellidos[70]; char usuario[50]; }Datos_persona; //Defino ...
  #1 (permalink)  
Antiguo 20/06/2004, 01:19
Avatar de Yashiro  
Fecha de Ingreso: mayo-2004
Mensajes: 139
Antigüedad: 20 años
Puntos: 0
C++ Ayuda!!!

-Con respecto a mi problema o mas bien experimento e declarado unos struct ejemplo:

typedef struct {
char Nombre[34];
char apellidos[70];
char usuario[50];
}Datos_persona;

//Defino persona de tipo Datos persona
Datos_persona persona;
-y lo voy a almacenarlo en un archivo (supongamos que esta en a) con:

//personales es el puntero de el fichero
FILE *personales;
personales = fopen("a:\datos_p.dat","a+b");


-Despues de solicitar los datos como por ejemplo:

cout<<"Digite el nombre"<<endl;
cin>>persona.Nombre;
cout<<"Digite apellidos "<<endl;
cin>>persona.apellidos;
cout<<"Digite el Nick de usuario "<<endl;
cin>>persona.usuario;


-Ya lleno el Struct lo almaceno en el archivo en esta forma:

fwrite(&persona,1,sizeof(persona),personales);
fclose(personales);


-Ahora mi duda es que cuando leo el fichero que contiene muchos struct llenos de informacion ya almacenada se me ocurrio hacer esto:

cout<<"Digite el nombre a buscar"<<endl;
cin>>nom;
FILE *personales;
personales = fopen("a:\datos_p.dat","r+b");
fseek(personales,recoge_num_reg,0);
cout<<"se han encontrado los siguientes datos";
//realiza una lectura de datos buscados en el fichero
fread(&persona,1,sizeof(persona),personales);
cout<<persona.Nombre<<"\n";
cout<<persona.apellidos<<"\n";
cout<<persona.usuario<<"\n";
-Tengo errores de compilacion en la funcion de busqueda la cual es:

FILE *personales;
personales = fopen("a:\datos_p.dat","r+b");
rewind(personales)
while not eof(){
if strcmp(fseek(personales,count,0),char_recibe) {
return count;
}
else {
count++;
}
}


-El error esta en el if strcmp(fseek(personales,count,0),char_recibe)

- Pero mi gran problema es que no puedo realizar correctamente busquedas (esto a la vez me impide el darlemantenimiento a los datos del archivo)

- Te pido que por favor me ayudes en mis primeros pasos en C (bueno creo que mas bien C++), y te lo agradeceria.....
  #2 (permalink)  
Antiguo 20/06/2004, 02:55
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
fseek es una función para mover el puntero del archivo, osea para moverse de posición, porque estas comparando su resultado con char_recibe?

Eso está mal seguro ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 20/06/2004, 08:14
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Eternal Idol tiene razon. Fseek no regresa lo que hay en el archivo.

Lo que talvez puedees usar es el fscanf() para ir saltando de dato en dato hasta alcanzar lo que quieres.

Despues en vez de utilizar strcmp utiliza memcmp o mmcomp no recuerdo, para que no te salgan errores del compilador por convertir tipos de datos.

Aunque lo ideal seria que todo lo pasaras a un arreglo y ahi hicieras todo lo que quieres para al final sobreescribir el archivo.


Saludos
  #4 (permalink)  
Antiguo 20/06/2004, 13:24
Avatar de Yashiro  
Fecha de Ingreso: mayo-2004
Mensajes: 139
Antigüedad: 20 años
Puntos: 0
Les explicare que intente hacer con esto:

if strcmp(fseek(personales,count,0),char_recibe) {
return count;
}
else {
count++;
}

-Mi intencion era que EL fseek se mueva en el archivo por medio del count y por medio del strcmp Char_recibe obtuviera el "indice" que estaba contenido en la estructura que busco ....

-si me pueden ayudar se los agradeceria ...

-a y esto estaria bien : fread(&persona,1,sizeof(persona),persona);

Última edición por Yashiro; 20/06/2004 a las 13:25
  #5 (permalink)  
Antiguo 29/06/2004, 09:27
 
Fecha de Ingreso: mayo-2004
Mensajes: 8
Antigüedad: 20 años
Puntos: 0
con listas

hacelo con lista enlasadas es mas facil al abrir el archivo tirai todo a una lista y vai trabajando de la misma lista y no con el archivo y cuando termines tirai toda la lista al archivo, sobreescribes el archivo
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 02:30.