接受多种格式的输入

问题描述 投票:0回答:1

我想创建一个接受日期的代码,但是我想让用户能够输入日期为ddmmyyyy或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
1个回答
1
投票

这里有一个简单的方法来实现它。它输入一个字符串,然后检查其中一个格式方法是否有效。它总是必须检查来自于 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);
        }
    }
}

下面是程序的两次运行。

输入日期 ddmmyyyy 或 dd-mm-yyyy2342020日期是第23天,第4月,2020年。

输入日期 ddmmyyyy 或 dd-mm-yyyy23-4-2020日期是第23天,第4月,2020年。

© www.soinside.com 2019 - 2024. All rights reserved.