For each of the following pairs of
scanf
format strings, indicate whether or not the two strings are equivalent. If they're not, show how they can be distinguished:(b)
"%d-%d-%d"
versus"%d -%d -%d"
所以在这种情况下,我的回答是它们不等价。因为除了以
%
开头的转换说明符以外的非空白字符, 前面不能有空格,它将与非空白字符不匹配。所以在第一种情况下,第一个和第二个整数后面不允许有空格,而在第二种情况下,前两个整数后面允许有任意数量的空格。但我看到这本书有不同的答案。它说它们彼此等效。
这是书的错吗?或者我只是对
scanf
中格式字符串的概念有误解功能?
最佳答案
书错了。根据 scanf()
的规范:
所以在第一种情况下
scanf
到达 %d
并获取输入,接下来是 -
这意味着 scanf
预计流中的下一个会看到 non-whitespae
人物 -
而不是任何其他 whitespace
特点。所以合法的输入是1- 2
,但不是 1 -2
在第二种情况下,在第一个 %d
之后, scanf
将允许 whitespace
然后将到达 non-whitespace
,所以它将允许输入 1 - 2
根据以上定义。
关于c - 关于scanf函数中格式化字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66517019/