ho modificato alcune cose come tu mi hai detto:
codice:
#include <stdlib.h>#include <string.h>
#define MAX 100




/*Variabili Globali*/
typedef struct recRubrica
    {
     char Cognome[10];
     char Nome[10];
     int Numero;
    }t_Rubrica;
    












/*Prototipi Procedure*/
void visualmenu();
void scelta(int *N);
void iniazializzazione(t_Rubrica *rubrica);
void visualrubrica(t_Rubrica *rubrica);
void aggiungi(int *c,t_Rubrica *rubrica);
void gestione(int n,int *c,t_Rubrica *rubrica);










/*Programma Principale*/
int main()
{
    t_Rubrica rubrica[MAX];
    int n;
    int c=0;
    iniazializzazione(&rubrica);
    do{
    visualmenu();
    scelta(&n);
    gestione(n,&c,&rubica);
    system("PAUSE");
    system("cls");
    }while(n=!5);
    system("PAUSE");
    return(0);
}




/*Procedure:*/
void iniazializzazione(t_Rubrica *rubrica){
        int i;
        for(i=0;i<MAX;i++)              
        rubrica[i].Nome[0]= 'x';
                          
return;                          
}
void visualmenu(){
     printf("\t\t\tRUBRICA TELEFONICA:");
     printf("\n\n\t 1-Aggiungi nuova voce in rubrica");
     printf("\n\n\t 2-Ricerca per nome");
     printf("\n\n\t 3-Ricerca per cognome");
     printf("\n\n\t 4-Stampa intera rubrica");
     printf("\n\n\t 5-Esci");  
return;
     }
     
void scelta(int *N){
     printf("\n\tInserisci scelta: ");
     scanf("%d",N);
return;
     }




void gestione(int n,int *c,t_Rubrica *rubrica){
     switch(n){
     case 1:   aggiungi(c,&rubrica);        
               break;
     case 2:
               break;
     case 3:
               break;
     case 4:   visualrubrica(&rubrica);
               break;
     }
     
return;
       }




void aggiungi(int *c,t_Rubrica *rubrica){
     if(*c!=MAX){
          printf("\n\tInserisci Nome: ");
          scanf("%s",&rubrica[*c].Nome);
          printf("\n\tInserisci Cognome: ");
          scanf("%s",&rubrica[*c].Cognome);
          printf("\n\tInserisci Numero telefonico: ");
          scanf("%s",&rubrica[*c].Numero);
          (*c)++;
     }else{
     printf("\n\n\t\tMemoria piena");      
     }
return;
     }




void visualrubrica(t_Rubrica *rubrica){
     int i;
     printf("\n\tNOME \t- \tCOGNOME \t- \tNUMERO TELEFONICO"); 
     for(i=0;i<MAX;i++){
     if(rubrica[i].Nome[0]!='x'){
     printf("\n\t%s \t  \t%s  \t%d",rubrica[i].Nome,rubrica[i].Cognome,rubrica[i].Numero);                          
     } 
     }    
return;
}
alcune cose ho risolto, altre invece no .. riscontro comunque problemi nel passaggio di parametri