Scrivendo un programma per la gestione di un officina, quindi mi doveva fare l'inserimento di u auto, la modifica dei dati, la ricerca per targa e la stampa di tutte le auto.
andando a compilarlo mi dava questi errori, che non riesco a capire:

In function `main':
syntax error at end of input

potreste darmi una mano nella correzione del codice???

vi posto il codice :

codice:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>

struct veicolo
    {
        char *targa;
        char *modello;
        char *nomeP;
        char *cognomeP;
        char *intervento;
        char *data;
        int ingressi;
        struct veicolo *next;
        };
        
        
void inserimento(char *tar, char *mod, char *no, char *cog, char *inte, char *dat);
void cerca(char *tar);
void modifica(char *t);
void stampa_auto(char *tar);
void stampa();


struct veicolo *officina;
const int dimS=30;

 main()
{
char risp='\0', targa[dimS], modello[dimS], nomeP[dimS], cognomeP[dimS], intervento[dimS], data[dimS];
int ingressi;

struct veicolo *v;
     
     while (risp!='u'){
           printf("***che operazione vuoi eseguire?***\n");
           printf("i per inserire un nuovo veicolo\n");
           printf("c per cercare un veicolo inserendo la targa\n");
           printf("m per modificare i dati di un veicolo\n");
           printf("p per la stampa\n");
           printf("s per stampare un veicolo inserendo la targa\n");
           printf("u per uscire\n");
           scanf("%c",&risp);
           fflush(stdin);
           switch(risp){
                      
                case 'i' :
                       printf("inserire targa\n");
                       gets(targa);
                       fflush(stdin);
                       printf("inserire modello\n");
                       gets(modello);
                       fflush(stdin);
                       printf("inserire nome\n");
                       gets(nomeP);
                       fflush(stdin);
                       printf("inserire cognome\n");
                       gets(cognomeP);
                       fflush(stdin);
                       printf("inserire la riparazione\n");
                       gets(intervento);
                       fflush(stdin);
                       printf("Inserire la data \n");
                       gets(data);
                       fflush(stdin);
                       inserimento(targa,modello,nomeP,cognomeP,intervento,data);
                       break;
                       
           case 'c' :
                      printf("Inserisci la targa:\n");
                      gets(targa);
                      fflush(stdin);
                      cerca(targa);
                      break;
                      
                      
                      case 'm':
                      printf("Inserisci la targa del veicolo da modificare:\n");
                      gets(targa);
                      fflush(stdin);
                      modifica(targa);
                      break;
                      
                      
                      case 'p' :
                      stampa();
                      break;
                      
                      
                      case 's':
                     printf("Inserisci la targa del veicolo da stampare:\n");
                      gets(targa);
                      fflush(stdin);
                      stampa_auto(targa);
                      break;
                      
                      case 'u' :
                      break;
                      
                      default:
                      printf("Scelta errata.\n");
                      break;
                      
                      
                      }
                      system("PAUSE");    
}
                        

    
void inserimento(char *t,char *mod,char *n,char *cog, int c,char *inte, char *dat)
{
     struct veicolo *v,*curr, *prev;
     int ingresso =1;
     v=malloc(sizeof(struct veicolo));
     v->targa=malloc((strlen(t)+1)*sizeof(char));
     strcpy(v->targa,t);
     v->modello=malloc((strlen(mod)+1)*sizeof(char));
     strcpy(v->modello,mod);     
     v->nomeP=malloc((strlen(n)+1)*sizeof(char));
     strcpy(v->nomeP,n);
     v->cognomeP=malloc((strlen(cog)+1)*sizeof(char));
     strcpy(v->cognomeP, cog);
     v->intervento=malloc((strlen(inte)+1)*sizeof(char));
     strcpy(v->intervento,inte);
     v->data=malloc((strlen(dat)+1)*sizeof(char));
     strcpy(v->data, dat);
     v->ingressi=ingresso;
     v->next=NULL;
     
     prev=NULL;
     curr=officina;
     
     if (!officina || strcmp(curr->targa,t)>=0){
                   v->next=officina;
                   officina=v;
                   }
        else{
             while (curr && strcmp(curr->targa,t)<0){
                   prev=curr;
                   curr=curr->next;
                   }
             prev->next=v;
             v->next=curr;
        }
}
    
                        
void modifica(char *t){
     struct veicolo *v;
     char risp,temp[dimS], temp2[dimS];
     int cil;
     
     v=officina;
     
     while(v && strcmp(v->targa,t)!=0)
             v=v->next;
             
     if(v){
           printf("che dato vuoi modificare?\n");
           printf("0 targa\n");
           printf("1 tipo\n");
           printf("2 nome\n");
           printf("3 cilindrata\n");
           printf("4 riparazione\n");
           scanf("%c",&risp);
           fflush(stdin);
           switch (risp){
                  case '0':
                       printf("inserire nuova targa\n");
                       gets(temp);
                       fflush(stdin);
                       strcpy(v->targa,temp);
                       break;
                  case '1':
                       printf("inserire nuovo modello\n");
                       gets(temp);
                       fflush(stdin);
                       strcpy(v->modello,temp);
                       break;
                  case '2':
                       printf("inserire nuovo nome\n");
                       gets(temp);
                       fflush(stdin);
                       printf("inserire cognome\n");
                       gets(temp2);
                       fflush(stdin);
                       strcpy(v->nomeP,temp);
                       strcpy(v->cognomeP, temp2);
                       break;
                  case '3':
                       printf("inserire nuova cilindrata\n");
                       scanf("%d",&cil);
                       fflush(stdin);
                       break;
                  case '4':
                       printf("inserire nuova intervento\n");
                       gets(temp);
                       fflush(stdin);
                       strcat(v->intervento,temp);
                       v->ingressi++;
                       break;                    
                  default:
                       printf("scelta errata,riselezionare\n");
                       break;
                  }
           }
           else
               printf("veicolo non trovato\n");
}                                        
                        
                        

void cerca(char *t)
    {
    struct veicolo *v;
    v=officina;
    
     while(v)
          {
          if(strcmp(v->targa, t)==0)            
                    {
                    printf("L'auto cercata e' stata riparata nell'officina.\n");
                    return;
                    }
                    else
                           printf("Auto non presente nell'archivio.\n");
                           v=v->next;
                                        
          } 
          if(!v)
                    printf("Auto non presente.\n");
                    return;
                    
          
    }
    
    
void stampa(){
     struct veicolo *v;
     v=officina;
     
     while (v){
        printf("Targa veicolo:         %s\n", v->targa);
        printf("modello:               %s\n", v->modello);
        printf("nome proprietario:     %s\n", v->nomeP);
        printf("cognome proprietario:  %s\n", v->cognomeP);
        printf("intervento effettuato: %s\n", v->intervento);
        printf("data :                 %s\n", v->data);
        printf("numero di interventi:  %d\n", v->ingressi);
           v=v->next;
           }
           return;
}                 

void stampa_auto(char *t)
{
    struct veicolo *v;
    
    v=officina;
   
    if(strcmp(v->targa, t)==0)
    {
        printf("Targa veicolo:         %s\n", v->targa);
        printf("modello:               %s\n", v->modello);
        printf("nome proprietario:     %s\n", v->nomeP);
        printf("cognome proprietario:  %s\n", v->cognomeP);
        printf("intervento effettuato: %s\n", v->intervento);
        printf("data :                 %s\n", v->data);
        printf("numero di interventi:  %d\n", v->ingressi);
        
    }
    else
        printf("Auto non trovata.\n");
        
}