问题描述
我正在编写一个从用户那里获得一行代码的代码,该行的格式类似于
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
,还需要进行许多更改。