Введенные символы не читаются правильно - PullRequest
0 голосов
/ 24 февраля 2020

Это должно быть простой ошибкой. Мой код в основном читает пользовательское значение ввода, и если значение больше 0, оно вернет значение. Если нет, он напечатает ошибку и запросит значение снова. Единственная проблема заключается в том, что при вводе нового значения оно использует старое ложное значение без ошибки.

int menuSize(int s) {
printf(" Please Enter size: ");
scanf("%i", &s);
if (s>0) {
}
else {
    printf(" Invalid Input\n");
    getchar();
    menuSize(s);
}
return s;
}

1 Ответ

1 голос
/ 24 февраля 2020

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

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

int menuSize(void) 
{
    int s = -1;
    printf(" Please Enter size: ");
    int rval = scanf("%i", &s);
    if (rval == 1 && s>0) {
        return s;
    } else {
        printf(" Invalid Input\n");
        getchar();
        return menuSize();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...