Как заставить мой код работать? Цикл как-то завершается, когда он не должен - PullRequest
1 голос
/ 10 июня 2019

Я недавно запустил cs50, и я работал над набором задач 1, и в моем коде что-то не так, и я не могу понять, что же не так. Вопрос в том, чтобы предложить число от 1 до 8 (включительно). Если вы не введете число от 1 до 8 (включительно), оно должно появиться снова.

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4

Я попытался использовать цикл do while, но если я ввожу неправильный номер или правильный номер, цикл завершается.

int main(void) {

    int n;
    do {

        printf("Height: ");
        n = scanf("%d", &n);

    }while(n < 1 || n > 8);
}

Это должно работать следующим образом.

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4
Stored: 4

Но вот сообщение, которое он выдает, когда я запускаю его в CLion.

C:\Users\acer\CLionProjects\untitled5\cmake-build-debug\hello.exe
Height:11
Process finished with exit code 0

1 Ответ

1 голос
/ 10 июня 2019

Вам не нужно назначать возврат сканирования переменной.

Если вы хотите отсканировать переменную 'n' с клиента, просто:

scanf("%d", &n);

вместо

n = scanf("%d", &n);

Переход по этой ссылке поможет вам понять больше https://computer.howstuffworks.com/c7.htm

...