繁体   English   中英

在C中使用scanf读取float

[英]Reading float using scanf in c

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

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)以其他格式打印浮点数。

所以,我的问题是我如何摆脱所有这些警告并读取一个可以正确打印的适当的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM