Как указано в комментариях, аргумент функции scanf_s
, соответствующий полю формата %d
, должен быть адресом целочисленной переменной (в вашем случае, playerNumbers
), вместо самой переменной, поэтому вы должны добавить &
перед именем переменной в списке аргументов.
Кроме того, ваше условие проверки для 'input' l oop, while (playerNumbers != 2 || playerNumbers != 3)
неверно, поскольку условие всегда оценивается как 'истинное': playerNumbers
не может быть одновременно 2
и 3
одновременно, поэтому хотя бы один из тестов !=
будет верным! Чтобы исправить это, измените оператор ||
(или) на &&
(и), чтобы l oop завершился, если либо test равен 'false':
while (playerNumbers != 2 && playerNumbers != 3) // Keep asking if it's not 2 AND not 3
{
printf("How many players are you ? 2 or 3 ? : \n");
scanf_s("%d", &playerNumbers); // Not the added "&" - to get the ADDRESS of playerNumbers
}
Далее, опять же, как указано в комментариях, вы почти наверняка захотите заключить строку player = &j3;
в блок else
:
if (i == 0) {
player = &j1;
}
else if (i == 1) {
player = &j2;
}
else {
player = &j3;
}
, в противном случае предыдущие назначения player
всегда будут быть отменённым!