read ASCII 11这种报错是为啥

P5730 【深基5.例10】显示屏

AnthonyZHOU @ 2022-08-20 00:00:40

#include <stdio.h>
int printf1(int n,char arr[n][15])
{
    for(int i=0;i<n-1;i++)
    {
        printf("%c%c%c.",arr[i][0],arr[i][1],arr[i][2]);
    }
    printf("%c%c%c\n",arr[n-1][0],arr[n-1][1],arr[n-1][2]);
}
int printf2(int n,char arr[n][15])
{
    for(int i=0;i<n-1;i++)
    {
        printf("%c%c%c.",arr[i][3],arr[i][4],arr[i][5]);
    }
    printf("%c%c%c\n",arr[n-1][3],arr[n-1][4],arr[n-1][5]);
}
int printf3(int n,char arr[n][15])
{
    for(int i=0;i<n-1;i++)
    {
        printf("%c%c%c.",arr[i][6],arr[i][7],arr[i][8]);
    }
    printf("%c%c%c\n",arr[n-1][6],arr[n-1][7],arr[n-1][8]);
}
int printf4(int n,char arr[n][15])
{
    for(int i=0;i<n-1;i++)
    {
        printf("%c%c%c.",arr[i][9],arr[i][10],arr[i][11]);
    }
    printf("%c%c%c\n",arr[n-1][9],arr[n-1][10],arr[n-1][11]);
}
int printf5(int n,char arr[n][15])
{
    for(int i=0;i<n-1;i++)
    {
        printf("%c%c%c.",arr[i][12],arr[i][13],arr[i][14]);
    }
    printf("%c%c%c\n",arr[n-1][12],arr[n-1][13],arr[n-1][14]);
}
int main()
{
    int n;
    scanf("%d",&n);
    char str[n];
    getchar();
    char arr[n][15];
    gets(str);
    for(int i=0;i<n;i++)
    {
        switch(str[i])
        {
            case '0':
                for(int j=0;j<15;j++)
                {
                    if(j==4||j==7||j==10)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '1':
                for(int j=0;j<15;j++)
                {
                    if(j==2||j==5||j==8||j==11||j==14)
                    {
                        arr[i][j]='X';
                    } else
                    {
                        arr[i][j]='.';
                    }
                }
                break;
            case '2':
                for(int j=0;j<15;j++)
                {
                    if(j==3||j==4||j==10||j==11)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '3':
                for(int j=0;j<15;j++)
                {
                    if(j==3||j==4||j==9||j==10)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '4':
                for(int j=0;j<15;j++)
                {
                    if(j==1||j==4||j==9||j==10||j==12||j==13)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '5':
                for(int j=0;j<15;j++)
                {
                    if(j==4||j==5||j==9||j==10)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '6':
                for(int j=0;j<15;j++)
                {
                    if(j==4||j==5||j==10)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '7':
                for(int j=0;j<15;j++)
                {
                    if(j==3||j==4||j==6||j==7||j==9||j==10||j==12||j==13)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '8':
                for(int j=0;j<15;j++)
                {
                    if(j==4||j==10)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
            case '9':
                for(int j=0;j<15;j++)
                {
                    if(j==4||j==9||j==10)
                    {
                        arr[i][j]='.';
                    } else
                    {
                        arr[i][j]='X';
                    }
                }
                break;
        }
    }

    printf1(n,arr);
    printf2(n,arr);
    printf3(n,arr);
    printf4(n,arr);
    printf5(n,arr);
}

by Powerful_25 @ 2022-08-23 08:26:43

@AnthonyZHOU

RE,估计是数组下标越界了吧

(具体的不要问我,我不会)


by AnthonyZHOU @ 2022-08-23 14:20:50

@sherry0218 感觉好像是输出本应该是个字符但我输出了ASCII码?不过自己跑没有任何问题。


|