我想创建一个接受日期的代码,但是我想让用户能够输入日期为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);
这里有一个简单的方法来实现它。它输入一个字符串,然后检查其中一个格式方法是否有效。它总是必须检查来自于 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年。