Dovrei scrivere un programma C per la gestione dell’archivio dei soci di un club di macchine d'epoca. In particolare, i dati da mantenere per ciascun associato sono i seguenti:Cognome (stringa di massimo 20 caratteri, può contenere spazi al suo interno),Nome (stringa di massimo 20 caratteri, può contenere spazi al suo interno),Codice fiscale,Indirizzo e-mail,Vetture possedute.Ogni vettura è caratterizzata da:Marca,modello,anno di produzione.definire le seguenti funzioni:Socio: funzione che ha come parametri i dati di una persona e li inserisce nella struttura dati atta a memorizzarli: essa deve leggere le informazioni da standard input ed inserirle in modo ordinato rispetto al cognome e nome; Email: funzione che, accettando in ingresso un modello di vettura ed un periodo temporale definito da due anni, visualizzi su standard output gli indirizzi e-mail di tutti i soci che possiedono una vettura del tipo definito e prodotta nel periodo dato in input;Vettura:funzione che accettando in ingresso il codice fiscale di un socio, permette di aggiungere una vettura a lui associata; main: all’interno del main predisporre un opportuno menu che permetta di scegliere e far eseguire le diverse funzioni implementate.
Allora inizio cosi:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 21

typedef struct *lpointer;
typedef struct {
char marca [MAX];
char modello [MAX];
int anno;
}vet;

typedef struct {
char cognome [MAX];
char nome [MAX];
codfis [MAX];
email [MAX];
vet auto;
lpointer next;
}user;
lpointer entryp=NULL

void socio();
void email();
void vettura ();
void aggiungi(lpointer pn);
lpointer* cerca (lpointer* inizio, char us);
void inserisci(*lpointer*pins,lpointer pnodo);

main (){
int scelta;
for(;; ) {
printf("\nMenù archivio soci");
printf("n1) Aggiunta di un socio ");
printf("n2) Email soci che possiedono una vettura specifica");
printf("n3) Aggiunta vettura socio ");
prinft("n0) Fine");
printf("\nScelta operazione (1,2,3,0) ");
scanf("%d", &scelta)
if(!scelta)
break;
switch (scelta) {
case 1: 
socio ();
break;
case 2:
email():
break;
case 3:
vettura ();
   }
}
return 0;
}
void socio () {
lpointer nuovo;
nuovo=(lpointer) malloc (size of (user));
if (nuovo==NULL){
printf ("\nMemoria insufficente");
}else{
printf("\nInserimento nuovo Socio");
printf ("\nInserisci nome : );
gets(nuovo->nome);
printf(\nInserisci cognome : )
gets(nuovo->cognome);
prinf(\nInserisci email : );
gets(nuovo->email);
printf(\nInserisci codice fiscale : );
gets(nuovo->codfis);
printf(\nInserisci vettura : );
adesso come inserisco la vettura? 
poi continuando
aggiungi(nuovo);
   }
}
void aggiungi(lpointer pn) {
lpointer *posins;
posins=cerca(&entryp,pn->cognome);
inserisci(posins,pn);
lpointer* cerca(lpointer*inizio, char us)
if(*inizio==NULL)
return inizio;
if(strcmp((*inizio)->cognome,us)>0))
return inizio;
inizio=cerca (&((*inizio)->next),us);
return inizio;
}
void inserisci(*lpointer*pins,lpointer pnodo){
pnodo->next=*pins;
*pins=pnodo;
}
è giusto? come scrivo le altre 2 funzioni? vi ringrazio in anticipo buona giornata[CODE]