运行时为什么会出现方框□

img


#include<stdio.h>
#include<string.h>
char d[25][25],b[100][5];
int e[25][25];
int main()
{
    int r,c,t,k=0;
    scanf("%d%d",&r,&c);
    getchar();
    char a[100];
    gets(a);
    int len=strlen(a),i,j;
    for(i=0;i<len;i++)
    {
        if(a[i]==' ')
            t=0;
        else t=a[i]-'A'+1;
        for(j=4;j>=0;j--)
        {
            b[i][j]=t%2+'0';
            t=t/2;
        }
    }

    int x=0,y=0,count=0;
    j=0;
    i=0;

    while(count<len*5)
    {
        while(y<c&&e[x][y]!=1&&count<len*5)
    {
        d[x][y++]=b[i][j++];
        e[x][y-1]=1;
        count++;
        if(j==5)
        {
            i++;
            j=0;
        }
    }
    y--;
    x++;
    while(x<r&&e[x][y]!=1&&count<len*5)
    {
        d[x++][y]=b[i][j++];
        e[x-1][y]=1;
        count++;
        if(j==5)
        {
            i++;
            j=0;
        }
    }
    x--;
    y--;
    while(y>=0&&e[x][y]!=1&&count<len*5)
    {
        d[x][y--]=b[i][j++];
        b[x][y+1]=1;
        count++;
        if(j==5)
        {
            i++;
            j=0;
        }
    }
    y++;
    x--;

    while(x>=0&&e[x][y]!=1&&count<len*5)
    {
        d[x--][y]=b[i][j++];
        b[x+1][y]=1;
        count++;
        if(j==5)
        {
            i++;
            j=0;
        }
    }
    x++;
    y++;
    }
    for(i=0;i<r;i++)
        for(j=0;j<c;j++)
        {
            if(d[i][j]==NULL)
                printf("0");
            else printf("%c",d[i][j]);

        }
    return 0;
}

img

肯定是算法有问题,比如数组越界什么的