Pregunta de Archivos

Implementador
11 de Abril del 2005
Como puedo hacer para que mi programa tome en cuenta el primer registro que almaceno en el?
Miren les pongo el código no veo el error y llevo horas estando buscando.


fseek(Dicc,sizeof(struct Definicion),SEEK_SET);

// ****** FALTA AQUI: NO AGARRA EL PRIMER REGISTRO ************
register cont=0;
while(!feof(Dicc))
{
fread(&Alumon,sizeof(struct Definicion),NumDeBytes,Dicc);
....
}

Al querer usar los valores que almaceno en Palabra me doy cuenta que siempre me agarra el segundo, por ejemplo en el archivo estan:

andrea I-102
lorena I-405

Los registros los tomo por pares, así como ven aquí y los almaceno en Alumno, y los agarro como Alumno.Uno y Alumno.Dos, la forma en como los almaceno es así:

cout<<"nnttt Ingresar Nuevo Alumno";
cout<<"nnnn Ingresa una caracteristica: ";
cin>>Alumno.Uno;
cout<<"n Ingresa su compañero de clases: ";
cin>>Alumno.Dos;
Alumno.Dos[MaxLargoNombre-1]='n';
fseek(Dicc,sizeof(struct Definicion),SEEK_END);

Importa también si abro el archivo al principio de mi programa, y le agrego datos, los borro, etc. y solo lo cierro cuando he terminado el programa?
bien=fwrite(&PalabraEn,sizeof(Definicion),NumDeBytes,Dicc);

Silvanha
11 de Abril del 2005
hola!.. mira no entiendo del todo tu codigo, pero puedo darte el pequño consejo de que abras el archivo, saques la informacion, la mandes a imprimir y lo cierres asi ves, por lo menos si es que esta afectando tu manera de manejar los datos. Ahora veo que ocupas fseek, si no mal recuerdo, esto es para ubicar el apuntador de archivo al final del mismo o no???, porque no pruebas.. quitandoselo...
es solo una idea, ojala te sirva de algo... saluditos!!!

jose
11 de Abril del 2005
hola! has escrito
fseek(Dicc,sizeof(struct Definicion),SEEK_SET);
debes escribrir
mide=sizeof(struct Definicion);
fseek(Dicc,mide*posicion-mide,SEEK_SET);
zizeof indica lo que indica un registro por eso se pone al fial del primer registro, nunca sera cero.