C语言中scanf中的格式化字符串

问题描述

就像<platform name="ios"> [...] </platform> 一样,我试图使用printf()格式字符串的可选说明符。我尝试使用宽度和精度说明符。现在在scanf()中,它只是保留这些列并根据这些说明符进行打印,但是printf()会发生什么?像scanf()%3d的含义在这里吗?对于%3.3f,这是否相关?我有点想法,在这种情况下,宽度代表某种特定格式但不确定的要读取的字符数。下面的代码对此进行了进一步说明:

scanf()

解决方法

由于您在评论中指定了您真正想知道的是“ 如果我强制尝试做的事情”,...结果如下(使用 Clang >)

warning: invalid conversion specifier '.'

warning: data argument not used by format string

但是,由于这些只是警告,因此程序会编译。

执行二进制文件后,输入要求的变量:

  1. "%d"的{​​{1}}已正确存储。
  2. 无论输入什么值,a的{​​{1}}总是存储" %3.3f "

简而言之,它几乎可以完成所有其他带有警告的代码,而行为不符合预期。这既不是不确定的,也不是不确定的行为,但这是错误

建议:不要问具有类似性质的问题'如果我尝试编译此问题,会发生什么情况'。只是尝试自己看看!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...