Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
922 views
in Technique[技术] by (71.8m points)

format - Printing leading '-' in C?

i was trying to print numbers in right justified format:

suppose,

input:

printf("
%d", 1234567);
printf("
%07d", 5);

output:

1234567
0000005

but what if i want to print

------5

i'm confused here, as '-' is used for left justification

i tried using

printf("
%-d", 5);

but console shows

warning: unknown escape sequence: '-'

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...