我有以下代码:
char temp[32] = "";
sprintf(temp, "%02s", "A");
但它有警告:Warning 566: Inconsistent or redundant format char 's'
,然后我改为代码:sprintf(temp, "%2s", "A");
,警告消失了,有什么区别?
答案 0 :(得分:6)
%0
格式表示“0-padding”,但您不能将其与字符串格式说明符(s
)组合,这是未定义的。
请参阅the manual page:
0
该值应为零填充。对于d,i,o,u,x,X,a,A,e,E,f,F,g和G转换,转换后的值在左边用零填充而不是空白。如果出现0和 - 标志,则忽略0标志。如果使用数字转换(d,i,o,u,x和X)给出精度,则忽略0标志。对于其他转换,行为未定义。