rename y remove, no funcionan!!! Ayuda!!

Xavi
06 de Diciembre del 2004
Se trata de añadir registros a un fichero de forma sequencial , utilizando un fichero auxiliar.

Funciona bien, pero cuando consulto los datos con el modulo mostrar_registre y despues quiero añadir otro registro con el modulo afegir_registre ya no renombra ni borra.

El registro de añade correctamente en el fichero auxiliar pero no se renombra al fixero original!

Por favor alguien sabe a que se puede deber?

Muchas Gracias !!

modulos:

void afegir_registre()
{
bool trobat;
FILE *f1;
FILE *faux;
persona p;
persona paux;

f1=fopen("dades.txt","a+b");
faux=fopen("aux1.txt","wb");
trobat=false;

printf("Introdueix el nom de la persona a afegir: ");
(void)flushall();
gets(paux.nom);
printf("Introdueix l'edat: ");
(void)flushall();
gets(paux.edat);
fread(&p,sizeof(p),1,f1);
while((!feof(f1)) && (!trobat) && (strcmp(p.nom,paux.nom)<=0))
{
if(strcmp(p.nom,paux.nom)==0)
trobat=true;
else
{
fwrite(&p,sizeof(p),1,faux);
fread(&p,sizeof(p),1,f1);
}

}
if(trobat)
{
printf("Aquest ja existeix");
fclose(f1);
fclose(faux);
remove("aux1.txt");
}
else
{
fwrite(&paux,sizeof(paux),1,faux);
while(!feof(f1))
{
fwrite(&p,sizeof(p),1,faux);
fread(&p,sizeof(p),1,f1);
}
}
fclose(f1);
fclose(faux);
remove("dades.txt");
if(rename("aux1.txt","dades.txt")==0)
printf( "nrenombradon");
else printf( "nNo ha sigut renombratn" );
}

void mostrar_registre()
{
persona p;
persona paux;
FILE *f1;
FILE *faux;
f1=fopen("dades.txt","a+b");
fread(&p,sizeof(p),1,f1);
printf("nFitxer Finaln");
while(!feof(f1))
{
printf("n");
puts(p.nom);
puts(p.edat);
fread(&p,sizeof(p),1,f1);
}
faux=fopen("aux1.txt","a+b");
fread(&paux,sizeof(paux),1,faux);
printf("nFitxer Auxiliarn");
while(!feof(faux))
{
printf("n");
puts(paux.nom);
puts(paux.edat);
fread(&paux,sizeof(paux),1,faux);
}


}