一个 '.' 在C中没有定义为a的一部分 *scanf() 符。所以结果就是UB。
'.'
*scanf()
如果转换规范无效,则行为未定义C11“7.21.6.2 fscanf 功能“ 7.21.6.213
fscanf
“如果这是未定义的行为,在使用现代GCC编译和运行时,它是否会以某种方式导致内存损坏?” 也许。我在GCC中没有发现任何指示a '.' 。虽然意外的说明者可能不会根据经验造成很大的伤害,但没有理由依赖它。
[OP后来添加]
“所以我需要完全理解它的作用,特别是我是否可以通过这个sscanf语句读取一些内容。”
存在的 '.' 渲染说明符无效。因此 70 在 "%.70s" 在限制输入方面具有可疑价值。因此代码 可以 表现得像 "%s" 这不是更好的 gets() 并且可能导致过多的输入和缓冲区溢出。例 "FOO;asdasd" 被修改为将其null字符更改为其他内容。
70
"%.70s"
"%s"
gets()
"FOO;asdasd"