如何将时间输入到结构中?

问题描述

我正在编写一个用户那里获得一行代码代码,该行的格式类似于

2018/Jan/22

是,是年/月/日:小时:分钟:秒。 我想要这段代码输出,如

2018-01-22

月更改为数字。

,时间存储到typedef。

typedef struct{
int year,month,day;
}Date;

Date Time[];

...

//in main() a user enters a number,and then memory allocated.
Date* p=(Date*)malloc(sizeof(Date)*number);

...

在这种情况下,我认为可以使用scanf()进入用户输入的行。 所以我写了

for(i=0;i<N;i++){
scanf("%d/%d/%d",p->year,p->month,p->day);
...
}

但是它不起作用。为什么?我抓不到。

解决方法

scanf无法更改未知的变量。这样,scanf需要指向变量的指针才能更改。您想要:

scanf("%d/%d/%d",&(p->year),&(p->month),&(p->day));

(不需要括号)

始终启用编译器的警告并留意它们。 (我将-Wall -Wextra -pedantic与gcc或clang一起使用。)

请注意,Jan不是数字,因此2018/Jan/22将不是有效的输入。为了支持2018/Jan/22,还需要进行许多更改。