为什么一直不输出。二维数组转置

#include<stdio.h>
int main()
{
    int n,m,i,j;
    int a[2000][2000],b[2000][2000];
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
            b[j][i]=a[i][j];
        }
    }
    printf("\n");
    printf("%d %d",m,n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d",b[i][j]);
        }
        printf("\n");
    }
    return 0;
}

img

你数组开的太大了,实际需要这么大的数组么?
尝试改为a[200][200]

int数组申请的空间太大,申请不出来,程序直接崩溃退出了
a[1000][1000]是可以的,2000太大。
非得这么大的话,只能动态分配空间了

int  **a = (in**)malloc(2000*sizeof(int*));
for(int i=0;i<2000;i++)
    a[i] = (int*)malloc(2000*sizeof(int));