Posto ciò che ho scritto:
void inserisci_ingresso()
{
char cognomeIscritto[20];
char nomeFile[20];
char nomeIndice[20];
char nomeIndiceCod[20];
char IscrizioniAperto[20];
char indiceAperto_iscrizioni[20];
char indiceCodiciAperto_iscrizioni[20];
Indice_iscrizioni cognomeLetto;
Ingressi e;
Ingressi eTemp;
Iscrizioni r;
FILE *f;
FILE *fIng; //file corso
FILE *fInd; //file indice del corso
strcpy(nomeIndice,nomeFile);
strcat(nomeIndice,".txt");
strcat(nomeFile,".dati");
strcpy(nomeIndiceCod,nomeIndice);
strcat(nomeIndiceCod,"i");
printf("Inserire il cognome: ");
scanf("%d", &cognomeIscritto);
f = fopen(indiceAperto_iscrizioni, "r");
fread(&cognomeIscritto,sizeof(Indice_iscrizioni),1 ,f);
while(!feof(f) && strcmp(cognomeLetto.chiave,cognomeIscritto) != 0)
{
fread(&cognomeLetto,sizeof(Indice_iscrizioni),1,f) ;
}
fclose(f);
if(feof(f))
{
return -1;
}
else
{
IndiceCodice_iscrizioni x;
f = fopen(indiceCodiciAperto_iscrizioni,"r");
int aCaso;
int posizione = RicercaBin(indiceCodiciAperto_iscrizioni,max,cogno meLetto.valore,&aCaso);
if(posizione > -1)
{
f = fopen(IscrizioniAperto,"r");
fseek(f,posizione * sizeof(Iscrizioni),0);
Iscrizioni r;
fread(&r,sizeof(Iscrizioni),1,f);
fclose(f);
return posizione;
}
else
{
return -1;
}
}
printf("Numero: ");
scanf("%d", &e.numero);
printf("Nome: ");
scanf("%s", &e.nome);
printf("Cognome: ");
scanf("%s", &e.cognome);
printf("Data: ");
scanf("%s", &e.data_ingresso);
printf("Ora di ingresso(HH:MM): ");
scanf("%s", &e.ora_ingresso);
printf("Ora di uscita(HH:MM): ");
scanf("%s", &e.ora_uscita);
e.cancellato = 0;
int cont = 0;
fIng = fopen(ingressoAperto,"r+b");
fread(&eTemp,sizeof(Ingressi),1,fIng);
while(eTemp.cancellato != 1)
{
fread(&eTemp,sizeof(Ingressi),1,fIng);
cont++;
}
int posInIngresso = cont;
fseek(fIng,cont * sizeof(Ingressi),0);
fwrite(&e,sizeof(Ingressi),1,fIng);
fclose(fIng);
Indice x;
Indice xTemp;
strcpy(x.chiave,e.cognome);
x.valore = e.numero;
fInd = fopen(indiceAperto,"r+b");
cont = 0;
fread(&xTemp,sizeof(Indice),1,fInd);
while(strcmp(xTemp.chiave,"VUOTO") != 0)
{
fread(&xTemp,sizeof(Indice),1,fInd);
cont++;
}
fseek(fInd,cont * sizeof(Indice),0);
fwrite(&x,sizeof(Indice),1,fInd);
fclose(fInd);
IndiceCodice y;
IndiceCodice yTemp;
y.chiave = e.numero;
y.valore = posInIngresso;
fInd = fopen(indiceCodiciAperto,"r+b");
cont = 0;
fread(&yTemp,sizeof(IndiceCodice),1,fInd);
while(yTemp.chiave != -1)
{
fread(&yTemp,sizeof(IndiceCodice),1,fInd);
cont++;
}
fseek(fInd,cont * sizeof(IndiceCodice),0);
fwrite(&y,sizeof(IndiceCodice),1,fInd);
fclose(fInd);
IndiceCodice ind[max];
fInd = fopen(indiceCodiciAperto,"rb");
int i;
for(i = 0; i < max; i++)
{
fread(&ind[i],sizeof(IndiceCodice),1,fInd);
}
fclose(fInd);
OrdinaIndiceCodici(ind,max);
fInd = fopen(indiceCodiciAperto,"wb");
for(i = 0; i < max; i++)
{
fwrite(&ind[i],sizeof(IndiceCodice),1,fInd);
}
fclose(fInd);
printf("Aggiornamento indici completato.\n");
}


Rispondi quotando
