我目前正在通过阅读教科书为进入编程学校做准备。有一个问题我不明白,课本上也没有给出答案。
PS:我在网上学习了一些 C++/C#,但从未参加过正确教授的编程课程,因此我在某些概念上遇到了困难。
问:对于以下每一对 scanf 格式字符串,请指出
两个字符串是否相等。如果不是,请显示
如何区分它们。
A) "%d"
versus " %d"
B) "%d-%d-%d"
versus "%d -%d -%d"
C) "%f"
versus "%f "
D) "%f,%f"
versus "%f, %f"
首先,我什至不明白这个问题在问什么。教科书上所说的两个字符串是否“相等”是什么意思?
如果是的话,有人可以解释这些差异并可能告诉我如何区分它们吗?
让我们尝试一下A
first: "%d"
versus " %d"
,它们是等效的格式字符串scanf()
.
" "
将执行以下操作。它永远不会失败。
1) 扫描并丢弃(跳过)可选的空白。
2)读取非空白或文件结尾后,如果不是(EOF),则将最后读取的字符放回stdin
.
"%d"
本身会尝试 3 件事(可能会失败)
1) 扫描并丢弃(跳过)可选的空白。
2) 扫描并转换表示十进制整数的数字文本。
3)读取非数字文本或文件结束符后,如果不是(EOF),则将最后读取的字符放回stdin
.
" %d"
执行上述两项操作。这与执行第二个操作的结果相同"%d"
.
With *scanf()
说明符注意:
输入空白字符(由isspace
函数)被跳过,除非规范包含[
, c
, or n
说明符。 C11 §7.21.6.2 8
B
, C
, D
差异?
鼠标悬停查看提示 1:
A " "
之前scanf()
除了上面提到的 3 之外,说明符是等效的 scanf() 格式,与没有它时相同。
将鼠标悬停在提示 2 上:
3 个等效项中只有 1 个。
将鼠标悬停在提示 3 上:
考虑输入:
“123-456-789”
“123.456 x” 下一个要读取的字符是什么?
B) "%d-%d-%d"
versus "%d -%d -%d"
C) "%f"
versus "%f "
D) "%f,%f"
versus "%f, %f"
Answer:
噢,你真的想得到答案吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)