ha realizzato questo codice...

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

#define NUM_LETTERE 46


int richiesta_nome_giocatore();
int numeroRandom(int lBound, int uBound); //Variabile di tipo integer: dichiarazione del blocco in cui verrà svolto la random 
void inizio(void); //Variabile di tipo void: dichiarazione della chiamata della schermata principale del gioco
void istruzioni(void);
int main()
{
          int i, j, lt; //Variabile di tipo integer: dichiarazioni delle variabili da utilizzare nei cicli successivi for 
          int lettereDaInserire; 
          int nRighe, nColonne;
          int riga_carta1, colonna_carta1, riga_carta2, colonna_carta2; 
          int tentativi,punti,mosse_errate,mosse_corrette;
          int caratteriUtilizzati[NUM_LETTERE];
          char nome_giocatore[30]; //Variabile di tipo character: dichiarazione della variabile che conterrà la stringa del nome del giocatore
          char caratteri[NUM_LETTERE+1] = {"ABCDEFGHILMNOPQRSTUVZWHKYJ1234567890£$^&=?!<>-"}; //Variabile di tipo character: dichiarazione dell'elenco dei caratteri da utilizzare nella random
          char** matrice; //Variabile di tipo character: dichiarazione della matrice con doppio puntatore
          char** gioco;
          char menu1,menu2;
          inizio();        
          fflush(stdin); 
          menu1 = getch();
          system("cls");
          /*Menu primario in cui si hanno delle scelte  */
          switch(menu1) 
          {               
                         case '1':
                              {
                                  
                                 
                                 for (i = 0; i < NUM_LETTERE; i++)
                                    caratteriUtilizzati[i] = 0;
                                 /* Richiesta del nome del giocatore */
                                 puts("Inserire nome giocatore:"); 
                                 scanf("%s",&nome_giocatore); 
                                 system("cls");
                                 /* Richiesta delle righe e colonne per creazione di matrice dinamica */
                                 printf("Numero righe: ");
                                 fflush(stdin);
                                 scanf("%d",&nRighe);
                                 printf("Numero colonne: ");
                                 fflush(stdin);
                                 scanf("%d",&nColonne);
                                 /*Costruzione della matrice dinamica utilizzando le variabili ottenute dall'utente*/
                                 lettereDaInserire = nRighe * nColonne;
                                 if (lettereDaInserire % 2 == 1 || lettereDaInserire == 0)
                                 {
                                    printf("\nNumero di celle non valido!");
                                    exit(0);
                                 }
                                 matrice = (char **)malloc(sizeof(char*)*nRighe);
                                 for (i = 0; i < nRighe; i++)
		                                 *(matrice + i) = (char *)malloc(sizeof(char)*nColonne);
                                 for (i = 0; i < nRighe; i++)
		                                 for (j = 0; j < nColonne; j++)
 					                                 *(*(matrice + i) + j) = ' ';
                             	 do
                             	 {
                             	    lt = numeroRandom(0,NUM_LETTERE-1);
                             	    if (!caratteriUtilizzati[lt])
                             	    {
                                       do
                                       {
                                          i = numeroRandom(0,nRighe-1);
                                          j = numeroRandom(0,nColonne-1);
                                       }
                                       while (*(*(matrice + i) + j) != ' ');
                                       *(*(matrice + i) + j) = caratteri[lt];
                                       do
                                       {
                                           i = numeroRandom(0,nRighe-1);
                                           j = numeroRandom(0,nColonne-1);
                                       }
                                       while (*(*(matrice + i) + j) != ' ');
                                       *(*(matrice + i) + j) = caratteri[lt];
                                       caratteriUtilizzati[lt] = 1;
                                       lettereDaInserire-=2;
                                    }
                                  }
                                  while(lettereDaInserire > 0);
                                  printf("\n\n"); 
                                  /*Stampa della matrice per prova */ 
                                  for (i = 0; i <nRighe; i++)
                                  {
                                      for (j = 0; j < nColonne; j++)
                                      printf("matrix [%d] [%d] = %c\n",i,j,*(*(matrice + i) + j)); //da trascurare la stampa
                                      
                                  } 
                                  /*Stampa della vera matrice */
                                  int k = 0; 
                                  int n = 0;            
                                  for (j = 0; j < nColonne; j++)
                                  {
                                    printf(" %d",k++);
                                  }    
                                  printf("\n");
                                  for (i = 0; i < nRighe; i++)
                                  {
                                    printf("%d",n++);
                                    for (j = 0; j < nColonne; j++)
                                    printf(" %c",*(*(matrice + i) + j)/*= '#'*/);
                                    printf("\n");
                                  }
                                     
                                  printf("\n");
                                  printf("Menu'",nome_giocatore);
                                  puts("");
                                  puts("[1] - Scopri le carte\n[2] - Salva la partita\n[3] - Carica la partita");
                                  puts("[4] - Visualizza lista mosse\n[5] - Istruzioni\n[6] - Esci");
                                  printf("Che cosa vuoi fare, %s?\n");
                                  menu2 = getch(); 
                                  /*Menu secondario in cui si hanno delle scelte  */
                                  switch(tolower(menu2)) //Funzione switch:
                                      {   
                                          case '1':
                                          {
                                              tentativi = 0;
                                              mosse_errate = 0;
                                              punti = 0;
                                              mosse_corrette = 0;
                                              puts("Carta 1:");
                                              fflush(stdin);
                                              scanf("%d %d",&riga_carta1,&colonna_carta1);
                                              if (((riga_carta1>=0) && (colonna_carta1>=0)) && ((riga_carta1<nRighe) && (colonna_carta1<nColonne))) 
                                              { 
                                                *(*(gioco+riga_carta1)+colonna_carta1) = *(*(matrice+riga_carta1)+colonna_carta1); 
                                                system("cls");
                                                for(i=0; i<nRighe;i++)
                                                {
                                                    for(j=0; j<nColonne; j++)
                                                        printf("%c",*(*(gioco+i)+j));
                                                    printf("\n");
                                                }    
                                                puts("Carta 2"); 
                                                fflush(stdin);
                                                scanf("%d %d",&riga_carta2,&colonna_carta2);
                                                if (((riga_carta2>=0) && (colonna_carta2>=0)) && ((riga_carta2<nRighe) && (colonna_carta2<nColonne )))
                                                {
                                                   *(*(gioco+riga_carta2)+colonna_carta2) = *(*(matrice+riga_carta2)+colonna_carta2);
                                                   system("cls");
                                                   for(i=0; i<nRighe;i++)
                                                   {
                                                      for(j=0; j<nColonne; j++)
                                                          printf("%c",*(*(gioco+i)+j));
                                                      printf("\n");
                                                   }
                                                   if (*(*(gioco+riga_carta1)+colonna_carta1) != *(*(gioco+riga_carta2)+colonna_carta2))
                                                   {
                                                      tentativi--;
                                                      mosse_errate++;
                                                      punti--;
                                                      printf("Hai sbagliato, ritenta!!!\n");
                                                      sleep(1000);