Qualcuno sa dirmi perche' non funziona?

codice:
	       char * mat = (char*)malloc(sizeof(char)*MAXDIM);
		sprintf(mat,"%d",m);
		i = 0;
		while(comandi[i] != NULL)
		  {
		    printf("Com  --> %s\n",comandi[i]);
		    strcat(mat,"-");
		    strcat(mat,comandi[i]);
		    i++;
		  }
		mat[i] = '\0';
m e' un numero, una specie di codice che identifica una cerca operazione.. non e' importante per capire il resto. Io voglio concatenare una serie di comandi (comandi** e' un puntatore a stringhe contenenti i comandi che voglio attaccare l'uno all'altro).
Mat quindi alla fine dovrebbe stampare ad esempio:

100-comando1-comando2-comando3

ma non funziona!!! Perche'!? Da notare che quando stampa Com --> stampa tutto regolare...!! Aiuto!