期望输入两种类型?

时间:2018-10-30 18:25:14

标签: c variables

比方说,我有一个程序告诉您何时死亡。我需要用户的年龄。但是用户可以给我他的年龄或生日。

[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]

我这样尝试过,但是没有用。如果可行,则仅适用于第一个,而不适用。

再次,基本上,我只想给用户2个不同的选项。两种不同的方式告诉我他的年龄。

1 个答案:

答案 0 :(得分:4)

我将使用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;
}