Как реализовать чтение двух массивов из одного файла?

Рейтинг: 1Ответов: 1Опубликовано: 09.12.2014

Нужно считать из одного файла размер массивов и их значения. Массивы располагаются друг под другом. Вид файла считывания такой:

2
1   3
4   8
5   4
3   0

Часть проблемного кода:

FILE *file;
int A[1024][1024], B[1024][1024];
file =fopen("matrix","r");
if(file == NULL)
{
    printf("This file is not found.\n");
    return 1;
}
fscanf(file,"%d", &N);
for(i = 0; i < 2*N; i++)
    for(j = 0; j < N; j++)
    {
        if(i < N)
            fscanf(file,"%d",&A[i][j]);
        else
            fscanf(file,"%d",&B[i-N][j]);
    }

Если при считывании убрать один из массивов, то файл читается нормально. В чем моя ошибка? Спасибо.

Ответы

▲ 2Принят
int A[100][100], B[100][100];

или

static int A[1024][1024], B[1024][1024];

И все работает. Подозреваю, что выделять 8 мегабайт (1024 * 1024 * 4 байта в инт * 2 массива) в стеке не очень хорошо. Или уменьшайте размер, или юзайте другой класс класс памяти (ключевое слово static) или юзайте malloc/new