【问题标题】:Program stops after assigning values to struct using scanf使用 scanf 为 struct 赋值后程序停止
【发布时间】:2014-06-20 08:36:44
【问题描述】:

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

【问题讨论】:

    标签: c struct scanf


    【解决方案1】:

    scanf 的参数是指针类型。将&amp;scanf的各个参数放在前面

    scanf ("%i:%i:%i", &time.hours, &time.minutes, &time.seconds);
    

    【讨论】:

    • 原型在main中定义
    • @AlterMann;错过了:)
    • @AlterMann 在其他函数中本地声明一个函数原型是完全有效的。
    • @user2849447;他并不是说这是错的。他刚刚通知了我。
    • @AlterMann 会的! :)
    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2014-10-09
    相关资源
    最近更新 更多