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 argcchar *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...