2017-09-13 17 views
-2

我创建了一个结构变量。一个例子是:在C中的struct中存储浮点数字

struct numbers 
    { 
     float start; 
     float end; 
     int middle; 
    }values; 

    int main() 
    { 
     scanf("%f %f %d", &values.start, &values.end, &values.middle); 
     printf("%f %f %d, &values.start, &values.end, &values.middle); 
    } 

当我尝试通过用户输入,如“0 5.8 3”读取这些变量的值。当我尝试打印,它看起来像这样

0.000000 0.0000000 -26148776(最后一个数字的变化,每次我运行程序,其余的仍然为0)

我怎样才能解决这个问题?

在此先感谢!

+4

为什么在printf ?? – rsp

+0

您将地址传递给'printf'。不要从'scanf'复制。阅读规范。 – StoryTeller

+0

在发布[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)的将来,请复制粘贴一些工作代码,而不是将其重新输入到问题中。如果您重新键入,则可能会导致您添加其他无关的错误和问题,就像您对未终止的字符串所做的那样。或者,甚至可以解决你所问的问题,但没有意识到。 –

回答

2

函数的scanf family需要指针,因此它知道在哪里存储结果。

功能的printf family打印,所以它不需要指针。

如果printf格式规范与参数之间不匹配,则会导致未定义的行为

所以简单的解决方案是不要在您的printf调用中使用地址 - 运算符&作为参数。