Ожидается 2 типа входов? - PullRequest
0 голосов
/ 30 октября 2018

Допустим, у меня есть программа, которая сообщает вам, когда вы умрете. Мне нужен возраст пользователя для этого. Но пользователь может сообщить мне свой возраст или день рождения.

printf("Tell me your age or brith day\n");

if(scanf("%d", &age)!=1){
printf("error");

}
else if(scanf("%d %d %d", &day,&month,&year)!=3){
printf("error");

Я попробовал это так, но это не работает. Только первый, если работает, а не второй.

Опять же, в основном, все, что я хочу, это дать пользователю 2 разных варианта. 2 разных способа сообщить мне свой возраст.

1 Ответ

0 голосов
/ 30 октября 2018

Я бы использовал fgets, чтобы получить строку ввода, затем использовал бы sscanf, чтобы попробовать каждую возможность:

#include <stdio.h>

int main(void)
{
    char buf[2048];
    int day, month, year, age;
    printf("Tell me your age or brith day\n");
    fflush(stdout);
    fgets(buf, sizeof buf, stdin);

    if (sscanf(buf, "%d %d %d", &day,&month,&year)==3)
    {
        printf("Your birthday is %d/%d/%d\n", day, month, year);
    }
    else if(sscanf(buf, "%d", &age)==1){
        printf("You are %d years old.\n", age);
    }
    else
        printf("error");

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...