【问题标题】:questionon scanf() in C关于 C 中 scanf() 的问题
【发布时间】:2011-08-13 13:03:59
【问题描述】:

下面这句话的确切含义是什么,

if (scanf("%lf", &x) != 1)

我尝试输入数字,条件为true,否则输入'a'之类的无数字字符时,条件为false

你能告诉我更多关于scanf()和价值1的信息吗?

【问题讨论】:

    标签: c function scanf


    【解决方案1】:

    我系统上scanf() 的文档说明:

    这些函数返回成功匹配和分配的输入项的数量,该数量可能少于提供的数量,在早期匹配失败的情况下甚至为零。

    因此,如果找到浮点数,则scanf() 的结果为1,否则为0。如果返回值不是(!=),则执行if 语句的主体一个。

    【讨论】:

      【解决方案2】:

      man scanf

      返回值

      这些函数返回成功匹配的输入项数 和分配,它可以比规定的要少,甚至为零 早期匹配失败的事件。

      如果在任一之前到达输入的结尾,则返回值 EOF 发生第一次成功转换或匹配失败。 EOF 是 如果发生读取错误也返回,在这种情况下错误指示符 为流(参见 ferror(3))设置,并且设置了 errno 指示 错误。

      【讨论】:

        【解决方案3】:

        if (scanf("%lf", &x) != 1)

        如果您输入数字 1 作为输入,则您的条件应为 FALSE

        “%lf”是将数值转换为浮点数的转换说明符

        当您的输入是非数字(即“A”或“Z”或“{”等)时,您的编译器不知道如何将符号转换为实数。

        scanf读取用户通过标准输入设备输入的数据,并将其存储在一个变量中,该变量的名称和数据类型由程序员确定

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-21
          • 2011-07-21
          相关资源
          最近更新 更多