Salve ragazzi..ho questo problema...non riesco a capire come dato un elemento di una struttura scritto in un file si riesca a ricavare l'altro elemento della stessa struttura e poi come ordinare i termini della struttura secondo un certo ordine:
questo è il codice da me finora creato..
Codice PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
typedef struct {
int Anno;
int Mese;
int Giorno;
} Data;
typedef struct {
int NumInvent;
Data DataArr;
char Cognome[30];
float Costo;
int NumStanza;
} risorse;
risorse r;
void AggiungiRisorsa(FILE *fp); /*prototipo*/
void CercaRisorsa(FILE *p);
void Ordina(FILE *p);
int main(int argc, char *argv[])
{
FILE *fp;
char Risposta;
if((fp=fopen("risorse.dat","w+"))==NULL)
{
printf("Il file %s non può essere aperto","risorse.dat");
exit(1);
}
puts("Premi A per inserire una nuova risorsa");
puts("Premi B per sapere in quale stanza è collocata la risorsa scelta");
puts("Premi C per ordinare in termini di costo decrescente le risorse");
puts("Premi D per uscire");
Risposta=getchar();
switch(Risposta)
{
case 'A': AggiungiRisorsa(fp)/*chiamata alla funzione*/;
break;
case 'B': CercaRisorsa(fp);
break;
case 'C': Ordina(fp);
break;
case 'D': exit(1);
break;
}
system("PAUSE");
return 0;
}
void AggiungiRisorsa(FILE *p) /*funzione aggiorna risorsa*/
{
FILE *a;
if((a=fopen("risorse.dat","w+"))==NULL)
{
puts("Errore apertura e scrittura file");
exit(1);
}
puts("Aggiungi risorsa");
puts("Inserisci il Numero dell'Invertario ");
scanf("%d",r.NumInvent);
puts("Inserisci il cognome del Professore Responsabile del fondo ");
scanf("%s",r.Cognome);
puts("Inserisci il costo ");
scanf("%f",r.Costo);
puts("Inserisci il numero della stanza ");
scanf("%d",r.NumStanza);
puts("Inserisci la data: Anno,Mese,Giorno ");
scanf("%d,%d,%d\n",r.DataArr.Anno,r.DataArr.Mese,r.DataArr.Giorno);
puts("Scrittura in corso...");
if(fwrite(&r,sizeof(risorse),1,a)>0)
puts("Scrittura completata con successo");
else
puts("Errore di scrittura");
}
void CercaRisorsa(FILE *p)
{
FILE *a;
if((a=fopen("risorse.dat","w+"))==NULL)
{
puts("Errore apertura e scrittura file");
exit(1);
}
puts("Inserisci il numero di inventario");
scanf("%d",r.NumInvent);
{
}
}
void Ordina(FILE *p)
{
}
Attendo...