Ciao a tutti,
sono alle prime armi con RPC e non riesco a capire il perche' della stampa di una printf
vi posto il codice:
codice:
static int inizial = 0;
static Candidati candidati;
static Liste elencoliste;


void inizializza()
{
      int i;
      
      if(inizial == 1)
      {
       
           printf("\n\n\n inizializ vale %i", inizial);
           return;
      

      }
      else
      {
        for(i = 0; i< N; i++)
        {
          printf("\n inizia la procedura di preparazione di candidati...");
          candidati.candidato[i].nome[0] = '\0';
          candidati.candidato[i].nome_lista[0] = '\0';
          candidati.candidato[i].value = 0;
          printf("inizializzato candidato %i", i);
        }
        for(i = 0; i< N; i++)
        {
           elencoliste.liste[i].lista[0] = '\0';
           elencoliste.liste[i].coalizione[0] ='\0';
           printf("\ninizializzato candidato %i", i);
        }
        
        printf("\nRiempimento struttura liste e check inizializzazzione.....");
        strcpy(elencoliste.liste[0].lista,"nulla");
        strcpy(elencoliste.liste[0].coalizione,"nulla");

        strcpy(elencoliste.liste[1].lista,"cataldi");
        strcpy(elencoliste.liste[1].coalizione,"cater bruno");

        strcpy(elencoliste.liste[2].lista,"valer");
        strcpy(elencoliste.liste[2].coalizione,"rita d-avorio");

        strcpy(elencoliste.liste[3].lista,"aldi");
        strcpy(elencoliste.liste[3].coalizione,"poiater rino");
     
      for(i = 0; i< N; i++)
      {
        printf("elencoListe %i esimo: %s  e %s", i, elencoliste.liste[i].lista, elencoliste.liste[i].coalizione);
      }
      inizial= 1;
      printf("\nValore di inizial posto ad %i", inizial); 
        
      }
    
}

//funzione per la richiesta totale dei voti...

int * visualizzazzione_voti_lista_1_svc(Input *name, struct svc_req * rqstp)
{
 int i;
 int valore = 0;
 static int result = -1;
 printf("\nSono qui....nome lista richiesta:%s", name->lista);    // questa printf stampa il nome lista passato
                                                                                          // nella precedente chiamata
 inizializza();
 printf("\nSono qui....nome lista richiesta:%s", name->lista);   // questo stampa quello attuale
  for(i = 0; i<N; i++)
  {
    if(strcmp(name->lista, elencoliste.liste[i].lista)== 0)
    {
     valore = 0;
     break;
    }
   valore = -1; 
  }
  if(valore < 0 )  // non esiste la lista
   return (&result);
 
  for( i = 0; i<N; i++)
  {
     if(strcmp(name->lista, candidati.candidato[i].nome_lista)== 0)
    {
          result +=  candidati.candidato[i].value;
    }
  }
return (&result);
}
Allora la procedura inizializza....ha il compito di inizializzare le strutture dati al primo avvio....queste sono due Candidati e Liste;
Nella funzione int * visualizzazzione_voti_lista_1_svc(Input *name, struct svc_req * rqstp) viene richiamata sempre inizializza che tramite una variabile statica ....sa se devono essere inizializzate le due strutture, se la variabile assume il valore 1 significa che inizializza e' gia stata eseguita...e quindi ritornera' semplicemente senza fare nulla.....

La chiamata di nella funzione ha una printf() prima e una printf() dopo.... per stampare il valore passato alla procedura
remota sia dopo e che prima della chiamata di inizializza......
codice:
 printf("\nSono qui....nome lista richiesta:%s", name->lista);    // questa printf stampa il nome lista passato
                                                                                          // nella precedente chiamata
 inizializza();
 printf("\nSono qui....nome lista richiesta:%s", name->lista);   // questo stampa quello attuale
non capisco perche' le due printf stampano differenti valori.....eppute di static non ce nulla?
Qualcuno sa spiegarmi il perche'???????????????