我有一个包含浮点变量的结构,
struct MyStruct{
float p;
}newMyStruct;
我正在使用 scanf
int main(){
scanf("%f",&(newMyStruct.p));
}
问题是当我使用 printf("%f",newMyStruct.p)
打印它时,它打印出“0.000000”。我还收到一条警告,说参数是双倍的,而格式期望它是 float 的(警告 scanf("%f",&(newMyStruct.p));
语句)。当我将 scanf()
语法更改为
scanf("%0f",&(newMyStruct.p));
,printf("%0f",newMyStruct.p);
正确打印浮点值,但编译器给出另一个警告(与精度相关的内容为 0)。
此外,printf("%2f",newMyStruct.p)
以其他格式打印 float 。
所以,我的问题是如何摆脱所有这些警告并读取一个可以正确打印的正确浮点变量。
我无法访问我通常使用的笔记本电脑,因此我无法提供适当的警告。
最佳答案
编辑:
我无法重现问题。当我使用以下用 gcc 编译的代码时,一切都按预期工作:
#include <stdio.h>
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
关于c - 在c中使用scanf读取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254584/