使用scanf为struct赋值后,程序停止

时间:2014-06-20 08:36:45

标签: c struct scanf

在下面的代码中,当我使用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};

1 个答案:

答案 0 :(得分:3)

scanf的参数是指针类型。使用&

的每个参数放置scanf之前
scanf ("%i:%i:%i", &time.hours, &time.minutes, &time.seconds);