C - Что не так с этим кодом, он не продолжается после того, как пользователь ввел свое предположение? - PullRequest
0 голосов
/ 11 июля 2019

Как вы увидели, проблема в том, что цикл не продолжается после того, как пользователи ввели его код, мне интересно, почему это так, и если у вас есть более подходящая цель для меня. Я новичок в языке C, помощь очень ценится !!!!!!

#include <stdlib.h>
#include <stdio.h>

int main()
{

        int randomNumber = 11;
        int usersGuess;
        int i;

        do {
                printf("You need to guess a number between 0 and 20! Good Luck! \n");

                for (i = 5; i > 0; i--) {
                        printf("You have got %d amount of tries, Guess The random number: ", i);
                        scanf_s("%d", usersGuess);

                        if (usersGuess == randomNumber) {
                                printf("You won");
                                break;
                        } else if (usersGuess > randomNumber) {
                                printf("That is wrong, random number is less than that");
                        } else if (usersGuess < randomNumber) {
                                printf("that is wrong, the random number is higher than that");
                        } else if (usersGuess > 20) {
                                printf("please guess again cause the random number is between 0 and 20");
                        }
                }


        } while(i > 0);




        return 0;
}

1 Ответ

2 голосов
/ 11 июля 2019

Ваш код имеет неопределенное поведение, что означает, что он глючит и что-то может произойти.Проблема в том, что вы передаете целое число в scanf_s, где требуется указатель.Сделайте это:

scanf_s("%d", &usersGuess);

Причина в том, что вы хотите, чтобы функция записывала в переменную usersGuess.В C все параметры передаются по значению, поэтому, если вам нужен выходной параметр, вы должны сделать его указателем.

...