在下面的代码中,当我使用scanf分配它的成员值时,程序会停止而没有任何错误。
#include <stdio.h>
typedef struct {
int hours, minutes, seconds;
} Time;
int main (void) {
Time getTime (void);
Time time;
time = getTime();
printf ("%i:%i:%i", time.hours, time.minutes, time.seconds);
}
Time getTime (void) {
Time time;
printf ("Enter time (hh:mm:ss): ");
scanf ("%i:%i:%i", time.hours, time.minutes, time.seconds);
return time;
}
输出样本:
Enter time (hh:mm:ss): 12:12:12
- 然后程序停止执行
当我将\n
添加到最后一个printf来刷新缓冲区时,它仍然没有改变任何东西。
我尝试使用默认值初始化两个结构,但它没有区别,即Time time = {0, 0, 0};
答案 0 :(得分:3)
scanf
的参数是指针类型。使用&
scanf
之前
scanf ("%i:%i:%i", &time.hours, &time.minutes, &time.seconds);