在gcc中如何填充前导0的数字字符串?

ojb*_*ass 2 c printf padding

我有以下代码

#include <stdio.h>
#include <stdlib.h>

char UPC[]="123456789ABC";

main()
{
  int rc=0;

  printf("%016s\n",UPC);

  exit(rc);
}
Run Code Online (Sandbox Code Playgroud)

在使用xlC编译器的AIX上,此代码打印出前导0

0000123456789ABC
Run Code Online (Sandbox Code Playgroud)

在Sles 11上,它使用gcc版本4.3.2打印前导空格[gcc-4_3-branch revision 141291]

123456789ABC
Run Code Online (Sandbox Code Playgroud)

是否有一些格式说明符,我可以使用字符串打印出前导0?我知道它适用于数字类型.

R..*_*R.. 5

printf("%.*d%s", (int)(w-strlen(s)), 0, s);
Run Code Online (Sandbox Code Playgroud)