【问题标题】:scanf not working when reading float读取浮点数时scanf不起作用
【发布时间】:2016-10-13 05:17:50
【问题描述】:

我有以下代码:

#include <stdio.h>

float a;            //Initialize variables
char b;
int c;
char d;

int main(void)
{
    printf("Enter float: ");
    scanf("%4.2f", &a);

    printf("%4.2f", a);

    //printf("Enter character:\n");

    //printf("Enter 4-digit integer: \n");

    //printf("Enter character:\n");

    return 0;
}

但是编译时出现以下错误:

1.) scanf:未知字段类型字符'.'在格式说明符中

2.) scanf: 为格式字符串传递的参数过多

谁能解释我的代码中的问题是什么?

谢谢!

【问题讨论】:

  • 当我尝试编译时,它似乎仍然存在构建错误。嗯....
  • 我贴出了上面的两个错误。这个问题肯定与 scanf 函数有关。
  • 这正是我拥有的代码。是什么导致它无法在我这边工作?我正在使用 Visual Studio 2015
  • 我改用了 scanf_s 并且成功了!为什么 scanf 不起作用而 scanf_s 会?
  • 欢迎来到 Stack Overflow。请注意,在这里说“谢谢”的首选方式是投票赞成好的问题和有用的答案(一旦你有足够的声誉这样做),并接受对你提出的任何问题最有帮助的答案(这也给出了你的声誉小幅提升)。请查看About 页面以及How do I ask questions here?What do I do when someone answers my question?

标签: c


【解决方案1】:

scanf("%f",&amp;a) 不带格式说明符。

如 cmets Visual Studio 中所述,将此警告视为错误。 所以要么使用

scanf_s("%f",&a);

或进入设置并禁用此警告,如本文Why does Visual Studio 2013 error on C4996? 中所述

【讨论】:

    【解决方案2】:

    您不应该格式化输入。所以只需使用%f 作为scanf 的第一个参数

    scanf("%f", &a);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      相关资源
      最近更新 更多