Salve a tutti,
ho due funzioni una di salvataggio su file binario ed una di successiva lettura.
Il problema è che in fase di lettura, il ciclo for che lavora con la funzione feof() esegue una lettura di troppo, ovvero, l'ultimo elemento del file binario (che come tale è formato da elementi tutti della stessa grandezza) viene letto due volte.

Per completezza vi allego il codice delle due funzioni:


Scrittura su file binario:
codice:
void salva_binario(FILE *f)
{
     struct StringPool_TAPPOGGIO appoggio;
     int index;
     int n=0;
     //Finchè non si arriva all'ultima posizione della struttura sp
     for(index=0 ; index<NUMEROMASSIMOELEMENTISP ; index++)
     {
     //Se l'id è diverso da -1 e quindi la posizione è vuota
         if(sp.identifier[index]!=-1)
         {
         //Scrive su file identifier e stringa
            appoggio.identifier = sp.identifier[index];
            strcpy(appoggio.str,sp.str[index]);
            fwrite(&appoggio,sizeof(struct StringPool_TAPPOGGIO),1,f);
            //fwrite(&sp.identifier[index],sizeof(int),1,f);
            //fwrite(sp.str[index],sizeof(char),COST_NUM_CHAR,f);            
            
          }
     }
     fwrite('\0',sizeof(char),1,f);
      
}
Lettura da file binario:
codice:
void carica_binario(FILE *f)
{
     int index;
     char appo[COST_NUM_CHAR];
     struct StringPool_TAPPOGGIO appoggio;
     //azzera la struttura sp
     for(index=0 ; index<NUMEROMASSIMOELEMENTISP  ; index++)
     {
         sp.identifier[index]=-1;
         strcpy(sp.str[index],"");        
     }
     //finchè non si arriva alla fine del file binario
     for(index=0; feof(f) == 0; index++)
     {
         //Legge l'identifier e i COST_NUM_CHAR della stringa
         fread(&appoggio,sizeof(struct StringPool_TAPPOGGIO),1,f);  
         sp.identifier[index] = appoggio.identifier;
         strcpy(sp.str[index], appoggio.str);
         //debug
         printf("%d",index);
     }
}
Come potete notare nella fuznione di caricamente ho fatto una printf di debug dell'indice che mi stampa quante volte mi esegue il ciclo, ed effettivamente me lo esegue una volta in più e non saprei come risolvere.

Vi ringrazio in anticipo,
Neptune.