[Ansi C] sprintf i format typu %%%dc

1

Czesc. Ponizszy kod dziala w ten sposób że do bufora 'wsadza się' taką ilość spacji jaka podana jest w zmiennej jakisInt.
Chciałbym jednak zrozumieć dlaczego tak jest. Znam podstawowe formatowanie typu "%d" czy "%c", jednak taki wąż jak "%%%dc" jest dla mnie niezrozumiały i nigdzie się z tym nie spotkałem. Mógłby ktoś wytłumaczyć na czym to polega? Z góry wielkie dzięki.

    char bufor[rozmiar];
    sprintf(bufor,"%%%dc",jakisInt);
    printf(bufor);
0

wypisz sobie printf("%s",bufor);
to będziesz wiedział jak działa:
printf(bufor);

0

Konkretniej chodzi mi o to w jaki sposób ze zmiennej typu int powstają te spacje które wrzucane są na bufor. Nie chodzi mi o wynik, ale o mechanizm. Czyli o %%%dc - tzn. jak zinterpretować takie formatowanie.

Ok. Już łapię. Dzięki krwq. %%=%

1

Zauważ, że printf(bufor) wymaga przynajmniej jeszcze jednego argumentu (chara), inaczej wypisuje śmiecia.
W dodatku można zrobić to prościej, w jednej linijce:

printf("%*c", jakisInt, jakisChar);

Zamiast podawania szerokości w stringu (co wymaga dodatkowego sprintfa), wpisujesz *, a szerokość podajesz przed wartością do sformatowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0