C语言问题 数组问题 求解

下面是全部代码

#include <stdio.h>
#include <string.h>

int main ()
{
    char a[5][5],b[100];int i,j,c,m,n,d,l=0;
    for(i=0;i<5;i++)
        {for(j=0;j<5;j++)
            {
                scanf("%c",&a[i][j]);
                if(a[i][j]==a[2][1])
                   {a[2][1]='!';j++;}

            }
        printf("\n");}
    printf("请输入指令:");
    scanf("%s",b);
    c=strlen(b);
    m=2;n=1;
    for(i=0;i<c;i++)
       {
           int y=0;
           while(l==0 && y==0)
           {
            if(b[i]=='A')
              {
                 if(m>0)
                   {a[m][n]=d;d=a[m-1][n];a[m-1][n]=a[m][n];y=1;}
                 else
                   {l=1;break;}
              }
            else if(b[i]=='B')
              {
                 if(m<4)
                   {a[m][n]=d;d=a[m+1][n];a[m+1][n]=a[m][n];y=1;}
                 else
                   {l=1;break;}
              }
            else if(b[i]=='L')
              {
                 if(n>0)
                   {a[m][n]=d;d=a[m][n-1];a[m][n-1]=a[m][n];y=1;}
                 else
                   {l=1;break;}
              }
            else if(b[i]=='R')
              {
                 if(n<4)
                   {a[m][n]=d;d=a[m][n+1];a[m][n+1]=a[m][n];y=1;}
                 else
                   {l=1;break;}
              }
            else
              printf("输入错误!重新输入:\n");

           }

       }
    for(i=0;i<5;i++)
        {for(j=0;j<5;j++)
        printf("%c",a[i][j]);
        printf("\n");} 
} 

下面是我在C-free里面调试的代码:
图片说明

问题:为什么换行字符'\n'也进入了数组?该如何避免这种情况?

scanf里面是%c,会吃回车的,在第一重循环用 fflush(stdin); 清空键盘缓冲区