Originariamente inviato da doraemon83
codice:
void stampadipend()
{
pfdip=fopen("dipendenti.txt","a");
if(pfdip==NULL)
printf("errore apertura file");
else
{
while(feof(pfdip)==0)
{
fread(buffdip,sizeof(struct dipend),1,pfdip);
pfana=fopen("anagrafe.txt","a");
if(pfana==NULL)
printf("errore apertura file");
else
{
fread(buffana,sizeof(struct anagr),1,pfana);
do
{
if(strcmp(buffdip->coddip,buffana->coddip)==0)
{
printf("il nome e%s\n",buffana->nome);
c=1;
<----------
}
else
{
fread(buffana,sizeof(struct anagr),1,pfana);
}
}
while((feof(pfana)==0)||(c!=1));
}
fclose(pfana);
}
fclose(pfdip);
}
}
Dove ho messo la freccia manca la lettura del campo successivo del file, per cui resta sempre sullo stesso non trovando mai la fine del file e ripetendo le stesse operazioni sullo stesso campo.
in poke parole deve incrementare la feof(pfdip) in modo tale che nn sia più uguale a 0 ora nn so se sta formula è corretta ma dovresti fare così
codice:
while(feof(pfdip)==0)
{
fread(buffdip,sizeof(struct dipend),1,pfdip);
pfana=fopen("anagrafe.txt","a");
if(pfana==NULL)
printf("errore apertura file");
else
{
fread(buffana,sizeof(struct anagr),1,pfana);
do
{
if(strcmp(buffdip->coddip,buffana->coddip)==0)
{
printf("il nome e%s\n",buffana->nome);
c=1;
<----------
}
else
{
fread(buffana,sizeof(struct anagr),1,pfana);
}
}
feof(pfdip)++;