首页 > 解决方案 > 接受多种格式的输入

问题描述

我正在尝试创建一个接受日期的代码,但是我想让用户能够输入日期为 dd/mm/yyyy 或 dd-mm-yyyy。我的代码在下面,我尝试使用 OR 但它不起作用

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main ()
{
    int dayA, monthA, yearA,

    printf("First date in format DD/MM/YYYY or DD-MM-YYYY: ");
    scanf("%d/%d/%d" || "%d-%d-%d", &dayA, monthA, yearA);

标签: c

解决方案


这是一个简单的方法。它输入一个字符串,然后检查其中一种格式方法是否有效。检查函数族的返回值总是很重要的scanf,以了解转换是否成功。

#include<stdio.h>

int main(void)
{
    int dayA, monthA, yearA;
    puts("Enter a date dd/mm/yyyy or dd-mm-yyyy");
    char datestr[32];
    if(fgets(datestr, sizeof datestr, stdin) != NULL) {
        if(sscanf(datestr, "%d/%d/%d", &dayA, &monthA, &yearA) == 3 ||    // added missing &
           sscanf(datestr, "%d-%d-%d", &dayA, &monthA, &yearA) == 3) {
              printf("Date is day %d, month %d, year %d\n", dayA, monthA, yearA);
        }
    }
}

这是程序的两次运行:

输入日期 dd/mm/yyyy 或 dd-mm-yyyy
2020 年 4 月 23 日
日期为 2020 年第 4 个月第 23 天

输入日期 dd/mm/yyyy 或 dd-mm-yyyy 23-4-2020 日期为 2020 年第 4 个月第 23 天


推荐阅读