Kurze Antwort - ja, lange Antwort: nicht so, wie Sie es wollen.
Sie können die% * -Form von printf verwenden , die eine variable Breite akzeptiert. Und wenn Sie zum Drucken '0' als Wert verwenden, kombiniert mit dem rechtsbündigen Text, der links mit Null aufgefüllt ist.
printf("%0*d\n", 20, 0);
produziert:
00000000000000000000
Mit fest in die Wange gesteckter Zunge biete ich diesen kleinen Horror-Show-Code-Ausschnitt an.
Manchmal muss man die Dinge nur schlecht machen, um sich daran zu erinnern, warum man sich den Rest der Zeit so sehr bemüht.
#include <stdio.h>
int width = 20;
char buf[4096];
void subst(char *s, char from, char to) {
while (*s == from)
*s++ = to;
}
int main() {
sprintf(buf, "%0*d", width, 0);
subst(buf, '0', '-');
printf("%s\n", buf);
return 0;
}