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'