C中"%02s"和"%2s"之间有什么区别?

use*_*316 2 c printf

我有以下代码:

char temp[32] = "";
sprintf(temp, "%02s", "A");
Run Code Online (Sandbox Code Playgroud)

但它有警告:Warning 566: Inconsistent or redundant format char 's',然后我改为代码:sprintf(temp, "%2s", "A");,警告消失了,有什么区别?

unw*_*ind 6

%0格式的意思是"填充0",但你不能结合起来,与一个字符串格式说明(s),这是不确定的.

请参见手册页:

0

该值应为零填充.对于d,i,o,u,x,X,a,A,e,E,f,F,g和G转换,转换后的值在左边用零填充而不是空白.如果出现0和 - 标志,则忽略0标志.如果使用数字转换(d,i,o,u,x和X)给出精度,则忽略0标志.对于其他转换,行为未定义.