Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: n-utz en 22 Octubre 2016, 19:15 pm



Título: Problema en archivo indexado
Publicado por: n-utz en 22 Octubre 2016, 19:15 pm
Buenas gente, miren hice un algoritmo que carga unos datos de un alumno en un archivo maestro, y ademas carga la posicion de donde se encuentran dichos datos en el archivo maestro en un archivo llamado indice. El problema surge ahí, por consecuencias trabajo con cuatro archivos.
2 maestros
2 indices.

El problema surge en el 2do maestro con el 2do indice, al cargarle el primer alumno el indice deberia quedar cargado, en el campo de posicion, con el valor 0, pero queda cargado con 3, 4 y al usar fseek para imprimir los datos del archivo maestro imprime basura. Les dejo el algoritmo a ver si me pueden dar una mano.

Código:
FILE* regulares;
    FILE* inregulares;
    regulares=fopen("alumnos_regulares.bin","a");
    inregulares=fopen("indice_regulares.txt","at");
    fread(&a,sizeof(alumnos),1,fichero);
    while(!feof(fichero)){
        if(a.estado==1){
            ar.dni=a.dni;
            strcpy(ar.nombre,a.nombre);
            ar.born=a.born;
            ar.sexo=a.sexo;
            ar.address=a.address;
            ar.college=a.college;
            fwrite(&ar,sizeof(aregulares),1,regulares);
            i.posicion=0;
            i.posicion=ftell(regulares)-sizeof(aregulares);
            fwrite(&i,sizeof(indice),1,inregulares);
        }
        fread(&a,sizeof(alumnos),1,fichero);
    }

fichero es un puntero al otro archivo maestro.

Lo que estoy haciendo en este programa es purgar los alumnos ingresantes que cumplen las condiciones para pasar a ser regulares, y habilitarlos en el nuevo archivo.