C ошибка настольной игры памяти: нарушение прав чтения - PullRequest
0 голосов
/ 01 февраля 2020

Я делаю некоторые улучшения в игре, которую создал на языке C. проект представлял собой настольную игру памяти, в которой есть 2 таблицы, таблица для чисел и таблица для букв, где игрок должен выбрать 2 цифры с совпадающими буквами.

таблица чисел представляет собой массив символов, где после каждого правильного предположения числа в таблице заменяются соответствующими буквами из таблицы букв.

ошибка происходит в той части функции, где программа должна печатать массив чисел. (Я установил размер параметра формального массива 8x8, чтобы приспособить его для всех уровней игры).

Игрок выбирает числа в функции ConditionCheck , где программа проверяет, является ли число действительный.

void NumInput(char numbers[8][8], int rows, int columns)
{
    int i, j, n1, n2;
    printf("Choose 2 numbers from the table below: \n\n");       /// print the numbers array
    for (i = 0; i < rows; i++)
    {
        for (j = 0; j < columns; j++)
            if (isalpha(numbers[i][j]) != 0)        //  if the array literal is a letter
                printf("%2c  ", numbers[i][j]);
            else
                printf("%2d  ", numbers[i][j]);
        printf("\n\n");
    }

    n1 = ConditionCheck(1, rows * columns);
    n2 = ConditionCheck(2, rows * columns);
    N1 = &n1;
    N2 = &n2;
    return;
}

вот где я получаю: нарушение прав чтения. числа были 0x11100DE в 8-й строке (если выбор)

Что я сделал не так?

РЕДАКТИРОВАТЬ: Я инициализировал массив в основной функции игры.

char numbers[9][9];
k = 1;
for (i = 0; i < rows; i++)                /// initializing 'numbers' array
        for (j = 0; j < columns; j++)
        {
            numbers[i][j] = k;
            k++;
        }

Я вызвал функцию NumInput через пару строк в той же основной игровой функции:

while (countdown >= 0 && !win)
    {
        time1 = clock();
        NumInput(numbers[rows][columns], rows, columns);
        num1 = *N1;
        num2 = *N2;

ПРИМЕЧАНИЕ: N1 и N2 - целочисленные указатели для доступа к номерам, выбранным игроком в функции NumInput

...