gpt4 book ai didi

c - 关于scanf函数中格式化字符串的问题

转载 作者:行者123 更新时间:2023-12-03 16:31:28 26 4
gpt4 key购买 nike

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() 的规范:

  • 空白字符 :该函数将读取并忽略在下一个非空白字符之前遇到的任何空白字符(空白字符包括空格、换行符和制表符——请参阅 isspace)。格式字符串中的单个空格验证从流中提取的任意数量的空格字符(包括无)。
  • 非空白字符 , 除了格式说明符 (%):任何不是空白字符(空格、换行符或制表符)或格式说明符(以 % 字符开头)的一部分的字符都会导致函数从流中读取下一个字符,将其与此非空白字符进行比较,如果匹配,则将其丢弃,函数继续使用格式的下一个字符。如果字符不匹配,则函数失败,返回并保留未读流的后续字符。

  • 所以在第一种情况下 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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com