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;