C 接受多种格式的输入

C 接受多种格式的输入,c,C,我试图创建一个接受日期的代码,但是我想让用户能够将日期输入为dd/mm/yyyy或dd-mm-yyyy。我的代码如下,我试图使用或,但它不工作 #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: ")

我试图创建一个接受日期的代码,但是我想让用户能够将日期输入为dd/mm/yyyy或dd-mm-yyyy。我的代码如下,我试图使用或,但它不工作

#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);
#包括
#包括
#包括
int main()
{
在达亚,蒙塔,耶拉,
printf(“格式为DD/MM/YYYY或DD-MM-YYYY:”)的第一个日期;
scanf(“%d/%d/%d”| |%d-%d-%d“,&dayA,monthA,yearA);

这里有一个简单的方法。它将输入一个字符串,然后检查其中一个格式化方法是否有效。检查
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”);
char-datestr[32];
if(fgets(datestr,sizeof datestr,stdin)!=NULL){
如果(sscanf(datestr,“%d/%d/%d”,&dayA,&monthA,&yearA)==3 | |//添加缺失&
sscanf(datestr、%d-%d-%d”、&dayA、&monthA、&yearA)==3){
printf(“日期是第%d天,第%d个月,第%d年”\n“,达亚,蒙塔,第a年);
}
}
}
以下是该程序的两次运行:

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

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

您以错误的方式获取输入,请阅读,在您的情况下,最好使用字符串进行输入。最好解释一下如何使用此日期。我正在创建一个代码,读取两个日期,并计算两个日期之间的天数差,但我对这一部分感到满意。一旦我学会如何接受两个f中的日期或者第二次约会我也可以这样做 Enter a date dd/mm/yyyy or dd-mm-yyyy 23/4/2020 Date is day 23, month 4, year 2020

Enter a date dd/mm/yyyy or dd-mm-yyyy 23-4-2020 Date is day 23, month 4, year 2020