如果%在printf的格式字符串中没有后跟一个合适的字符怎么办?

use*_*138 1 c printf

我正在尝试编写一个名为error的函数,其行为类似于printf,但仅支持%s,%c和%d说明符.但是,如果%后面没有合法字符,我无法理解printf的行为.我也尝试循环使用c99标准手册但找不到任何东西.有人可以帮帮我吗?

Mat*_*Mat 8

C99在§7.19.6.1/ 9(for fprintf)中有此:

如果转换规范无效,则行为未定义.

因此,格式错误的格式字符串会导致未定义的行为.

如果格式字符串格式良好但参数实际上与类型不匹配,则相同:

如果任何参数不是相应转换规范的正确类型,则行为未定义.