Quote Originariamente inviata da oregon Visualizza il messaggio
Come ti ho detto nell'altro forum Andrea, una volta ottenuto il codice del cliente, ottieni i suoi dati di pagamento e confronta la data di pagamento con quella dell'ingresso.

Se non provi a scrivere qualcosa, aspettandoti il codice pronto, mi sa che non risolvi ....
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");
}