Allora per il sottoprogramma direi che è limitato. Infatti se non riceve "cont" (che tu hai dichiarato come variabile esterna) non funziona.

Per sopperire a questa mancanza ti consiglio di aggiungere

codice:
#include <string.h>
e a questo punto fare questo:

codice:
void copiastringa(char* stringa)
{
      int len, i;
      len=strlen(stringa)    /* questo comando ti dice la lunghezza esatta della stringa*/
  
     char* risultato;
     risultato=(char*)malloc(sizeof(char)*len);

     for(i=0; i<len; i++)
           *(risultato+i)=*(a+i);


    return risultato;
}
In questo modo qualsiasi lunghezza abbia la stringa la legge.

Ora per il main suggerirei di fare una define

codice:
#define MAX 50
In modo tale che MAX non sia modificabile e diventerebbe molto più semplice:

codice:
char a[MAX];

printf("Inserisci una stringa: ");
scanf("%s", a);   /* se vuoi mettere anche spazi devi scrivere scanf("%[^\n]", a);*/