3

我有一个包含浮点变量的结构,

struct MyStruct{
    float p;
}newMyStruct;

我正在使用它读取一个值scanf

int main(){
    scanf("%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)以其他格式打印浮点数。

所以,我的问题是如何摆脱所有这些警告并读取一个正确的浮点变量,该变量也可以正确打印。

我无法访问我通常在上面编写代码的笔记本电脑,因此我无法提供适当的警告。

4

1 回答 1

5

编辑:

我无法重现该问题。当我使用以下用 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

于 2013-10-08T17:42:50.263 回答