codice:
void aggVoti(void)
{
FILE *filePtr;
FILE *file1Ptr;
char nomeFileAna[20];
char nomeFileVot[20];
int key;
int i;
Anagrafico tempA = {0, "", "", "", ""};
VotiDisc tempV = { {},{},{} };
StudDisc tempS = {0, tempV};
printf("Introdurre il nome del file Voti che si vuole leggere\n");
scanf("%s", nomeFileVot);
if (( file1Ptr = fopen(nomeFileVot, "rb+") ) == NULL)
printf("Il file non può essere aperto.\n" );
else
{
printf("\n\nInserire la matricola da modificare, EOF to exit\n");
scanf("%d", &key);
i=0;
while(!feof(stdin))
{
fread(&tempS, sizeof(StudDisc),1, file1Ptr);
if(tempS.matricola==key)
{
modificaNota(&tempS);
//printf("Informatica:\n%1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f\n", tempS.disciplina.inf[0],tempS.disciplina.inf[1],tempS.disciplina.inf[2],tempS.disciplina.inf[3],tempS.disciplina.inf[4],tempS.disciplina.inf[5],tempS.disciplina.inf[6],tempS.disciplina.inf[7],tempS.disciplina.inf[8],tempS.disciplina.inf[9]);
//printf("Meccanica:\n%1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f\n", tempS.disciplina.mec[0],tempS.disciplina.mec[1],tempS.disciplina.mec[2],tempS.disciplina.mec[3],tempS.disciplina.mec[4],tempS.disciplina.mec[5],tempS.disciplina.mec[6],tempS.disciplina.mec[7],tempS.disciplina.mec[8],tempS.disciplina.mec[9]);
//printf("Elettronica:\%1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f %1.f\n", tempS.disciplina.elet[0],tempS.disciplina.elet[1],tempS.disciplina.elet[2],tempS.disciplina.elet[3],tempS.disciplina.elet[4],tempS.disciplina.elet[5],tempS.disciplina.elet[6],tempS.disciplina.elet[7],tempS.disciplina.elet[8],tempS.disciplina.elet[9]);
//aTasto();
fseek(file1Ptr,i*sizeof(StudDisc),SEEK_SET);
fwrite(&tempS, sizeof(StudDisc),1, file1Ptr);
printf("\n\nInserire la matricola da modificare, EOF to exit\n");
scanf("%d", &key);
rewind(file1Ptr);
i=0;
}
else
i++;
if(feof(file1Ptr))
{
printf("Matricola non trovata, inserire nuova matricola, EOF to exit");
scanf("%d", &key);
rewind(file1Ptr);
i=0;
}
}
fclose(file1Ptr);
}
}
la funzione modificaNota(&tempS); fa quello che deve fare, ho verificato questo con i printf che adesso ho commentato. Il problema sta nel salvataggio del record sul file