结果显示的是 Segmentation fault:段错误,检查是否有数组越界,访问到不应该访问的内存区域怎么办呀

img


我的代码如下:


#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    char a[1000][1000];
    int len[n];
    getchar();
    for(int i=0;i<n;i++)
    {
        gets(a[i]);

        len[i]=strlen(a[i]);    
    }
    int min=len[0];
    int flag;
    for(int i=0;i<n;i++)
        if(min>len[i])
        {
            min=len[i];
            flag=i;
        }

    puts(a[flag]);
    return 0;
}

结果显示的是 Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域
怎么办呀,看不懂,也不知道哪里错的

文字游戏, 不超过就是小于等于, 所以当给的字符串size为1000时, 数组没有空间放'\0' 越界

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

char charArr[10][1024];

int main()
{
    int n;
    scanf("%d", &n);

    int len[n];
    getchar();
    for (int i = 0; i < n; i++)
    {
        gets(charArr[i]);

        len[i] = (int)strlen(charArr[i]);
    }

    int min = len[0];
    int flag;
    for (int i = 0; i < n; i++)
    {
        if (min > len[i])
        {
            min = len[i];
            flag = i;
        }
    }

    puts(charArr[flag]);

    return 0;
}