c - 在c中使用scanf读取 float

标签 c printf string-formatting scanf

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

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/

相关文章:

C 中的纸牌游戏。数据类型四舍五入会给出不正确的结果

c++ - 是否强制要求短路逻辑运算符?和评价顺序?

windows - 如何在 x86_64 程序集中使用 printf 和 scanf?

c - ntohl 在 sin_port 上使用并得到负数

c - 如何使用位于结构中的函数指针来运行函数? (C)

javascript - 手动将 yyyy-MM-ddTHH :mm:ss. fffZ 转换为 JavaScript 中的 DateTime

c - C 中二维数组(矩阵)的分配?

c - 段错误 : while simulating tournament branch predictor

python - 在 python 日志记录中是否有一个格式化程序来截断字符串?

go - 是否应该在字符串格式化中使用 err.Error()?