C – 使用scanf(或任何其他函数)在int中获取日期MM / DD / YYYY
我在课堂上编写一个C程序,要求我们在结构中输入日期作为整数,定义如下:
typedef struct date{ int month; int day; int year; }Date;
现在真的不会有问题,除非它要求你只能输入mm / dd / yyyy。
我想如果我可以将它作为一个字符串输入,只需使用一个循环将三个分隔成其他变量字符串并将它们转换为int。
但后来我记得那个
printf("Enter Date (MM DD YYYY): "); scanf("%d %d %d",&...);
是可能的。 有没有办法一起’忽略”’?
scanf("%d/%d/%d",&d,&m,&y);
可能就是你在寻找的东西。 这将忽略输入中的/
在具有POSIX strptime()
或类似函数的系统上,如果您首先将字符串表示读入str
,则可以使用:
struct tm tm; strptime(str, "%m/%d/%Y", &tm);
它转换为您的date
如下:
date.year = tm.tm_year; date.month = tm.tm_mon; date.day = tm.tm_mday;