intを0詰めの任意の桁数文字列に変換するという何気ないことですが、一瞬迷ってしまったのでメモを残しておきます。
#include <string.h>
#include <stdio.h>
int main(){ char num[64],format[64]; sprintf(format, "%%0%dd", 5); sprintf(num, format, 12); printf(num); return 0; } // Output: 00012