c - 期待两种类型的输入?

标签 c variables

假设我有一个程序可以告诉你什么时候会死。我需要用户的年龄。但是用户可以告诉我他的年龄或生日。

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 种不同方式。

最佳答案

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

关于c - 期待两种类型的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53070622/

相关文章:

c - 预处理器如何在 C 中工作?

c - 链表实现中的虚拟节点

c - ARM汇编指针指向指针?

java - LocalDateTime 无法解析为变量

java - 将变量从一个类传递到另一个类

android - Native C Android - 使用 libptrhead 构建可执行文件时出现问题

arrays - Perl:在数组中搜索项目

javascript - javascript中如何将常量更改为变量

java - 如何从不同的类中增加一个值(在主类中)

函数错误的冲突类型