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

时间:2013-06-18 09:56:12

标签: c printf

我有以下代码:

char temp[32] = "";
sprintf(temp, "%02s", "A");

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

1 个答案:

答案 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标志。对于其他转换,行为未定义。