在c中使用scanf读取浮点数
我有一个包含浮点变量的结构,
struct MyStruct{ float p; }newMyStruct;
我正在使用scanf
读取一个值
int main(){ scanf("%f",&(newMyStruct.p)); }
问题是当我使用printf("%f",newMyStruct.p)
打印它时printf("%f",newMyStruct.p)
它打印’0.000000’。 另外我得到一个警告,说格式是双重的,而格式期望它是浮点数(警告scanf("%f",&(newMyStruct.p));
语句)。当我将scanf()
语法更改为scanf("%0f",&(newMyStruct.p));
, printf("%0f",newMyStruct.p);
正确打印浮点值但编译器给出了另一个警告(与精度为0的相关内容)。 printf("%2f",newMyStruct.p)
也以其他格式打印浮点数。
所以,我的问题是我如何摆脱所有这些警告,并阅读一个适当的浮动变量,也可以正确打印。
我无法访问我通常编码的笔记本电脑,因此我无法提供正确的警告。
编辑:
我无法重现这个问题。 当我使用以下用gcc编译的代码时,一切都按预期工作:
#include struct MyStruct { float p; } newMyStruct; int main() { scanf("%f", &(newMyStruct.p)); printf("%f\n", newMyStruct.p); }
gcc –version的输出如下:
gcc(Debian 4.7.2-5)4.7.2