This is one way to do it, taking advantage of the %.*s
format specifier.
#include <stdio.h>
void dashed(int width, int num)
{
char buff[12]; // enough for 32-bit int
int len = width - sprintf(buff, "%d", num);
printf("%.*s%s", len < 0 ? 0 : len, "-----------", buff);
}
int main(void)
{
dashed(7, 5); // 1 digit
puts("");
dashed(7, 55); // 2 digits
puts("");
dashed(7, 555555); // 6 digits
puts("");
dashed(7, 5555555); // 7 digits
puts("");
dashed(7, 55555555); // 8 digits
puts("");
return 0;
}
Program output:
------5
-----55
-555555
5555555
55555555
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…