Вопрос новичка по пользовательскому вводу и операторам if - PullRequest
1 голос
/ 27 апреля 2020
#import <Foundation/Foundation.h>

int main ()    {
    /*Start variables*/
    int choice;
    /*Menu*/
    printf("Welcome to the conversion program, please enter a number\n");
    printf("1. Temperature\n");
    if (scanf("%d", &choice) == 1) {
        printf("test message");
    }
    return 0;
}

В конечном итоге пользователь сначала вводит что-то, а затем игнорирует его и печатает тестовое сообщение, даже если проверка должна была быть неудачной. Что мне не хватает? (Нет ошибок или предупреждений)

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Вы не проверяете, что является вводом пользователем, вы проверяете, вводил ли пользователь что-либо (то есть, принимал ли scanf ввод и обрабатывал ли он правильно). Добавьте вложенный if для проверки значения выбора после подтверждения того, что пользователь вообще мог вводить.

0 голосов
/ 27 апреля 2020

scanf() не возвращает вводимые пользователем данные, он возвращает количество обработанных входных данных. Если вы хотите проверить ввод пользователя, вы должны использовать переменную choice.

int main ()    {
    /*Start variables*/
    int choice;
    /*Menu*/
    printf("Welcome to the conversion program, please enter a number\n");
    printf("1. Temperature\n");
    if (scanf("%d", &choice) == 1) {
        if (choice == 1) {
            printf("The temperature is 50\n");
        } else {
            printf("Invalid choice\n");
        }
    } else {
        printf("You didn't enter a number\n");
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...