c/c++语言开发共享不同scanf格式之间的差异

我正在通过阅读教科书为编程学校做准备。 有一个我不明白的特殊问题,教科书没有给出答案。

PS:我已经在网上学过一些C ++ / C#,但是从来没有通过正确教授的编程课程,所以我在努力学习一些概念。

问:对于以下每对scanf格式字符串,请指明两个字符串是否相同。 如果不是,请说明如何区分它们。

A) "%d"" %d"
B) "%d-%d-%d""%d -%d -%d"
C) "%f""%f "
D) "%f,%f""%f, %f"

首先,我甚至不明白问题是什么。 教科书的意思是2个字符串是否“等价”?

如果是,有人可以解释这些差异,并可能告诉我如何区分它们吗?

    让我们首先尝试A"%d"" %d" ,它们是scanf()等效格式字符串。

    " "将执行以下操作。 它永远不会失败。
    1)扫描并丢弃(跳过)可选的空白区域。
    2)读取非空白空间或文件结束后,如果不是(EOF),则读取的最后一个字符将被放回到stdin

    "%d"本身将尝试3件事(它可能会失败)
    1)扫描并丢弃(跳过)可选的空白区域。
    2)扫描并转换表示十进制整数的数字文本。
    3)读取非数字文本或文件结束后,如果不是(EOF),则将最后一个字符读回stdin

    " %d"同时执行上述操作。 与"%d"一起做第二次的结果相同。

    使用*scanf()说明符注意:

    除非规范包含[cn说明符,否则将跳过输入的空白​​字符(由isspace函数指定)。 C11§7.21.6.28


    BCD区别?

    将鼠标hover在提示1上:

    除了上面提到的3之外, scanf()说明符之前的" "是与没有它的等效scanf()格式。

    将鼠标hover在提示2上:

    只相当于3个中的1个。

    将鼠标hover在提示3上:

    考虑输入:
    “123 -456-789”
    “123.456 x”下一个要读的字是什么?

    B) "%d-%d-%d""%d -%d -%d"
    C) "%f""%f "
    D) "%f,%f""%f, %f"

    回答:

    Awww,你真的想得到答案吗?

    来自维基百科

    空白:任何空格字符都会触发零个或多个空白字符的扫描。 空白字符的数量和类型不需要在任何一个方向上匹配。

    scanf是关于继续消耗输入并得到你关心的事情。 格式化字符串中的普通char表示它使用完全相同的char,而不执行任何其他操作。 %d%f可以跳过前导空格。 总而言之,我们得到了:

    所以答案是B.

      以上就是c/c++开发分享不同scanf格式之间的差异相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560339.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐