non è quello il problema. il problema è che rimane da leggere il carattere '\n' (newline)

per evitare questo errore o fai:
codice:
do 
{ 
printf("Mossa: "); 
scanf("%c%*c",&m); 
if (m=='u' || m=='d' || m=='l' || m=='r') flag=1; 
}while(flag==0);
con %*c legge un carattere e non lo mette in nessuna variabile (così elimini il '\n')

oppure fai:

codice:
char invio;
do 
{ 
printf("Mossa: "); 
scanf("%c%c",&m,&invio); 
if (m=='u' || m=='d' || m=='l' || m=='r') flag=1; 
}while(flag==0);
dichiari invio come char e la usi come variabile per leggere il '\n'