Я делаю некоторые улучшения в игре, которую создал на языке 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