c - Какво означава спецификаторът на формат% * s?

Translate

В някои кодове, които трябва да поддържам, видях спецификатор на формат%*s. Някой може ли да ми каже какво е това и защо се използва?

Пример за използването му е като:

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

Всички отговори

Translate

Използва се за динамично определяне на ширината на полето:

  • Ширината не е посочена в низа за форматиране, а като допълнителен аргумент на цяло число, предхождащ аргумента, който трябва да бъде форматиран.

така че "отстъп" указва колко място да се отдели за низа, който го следва в списъка с параметри.

Така,

printf("%*s", 5, "");

е същото като

printf("%5s", "");

Това е хубав начин да поставите някои интервали във вашия файл, като избягвате цикъл.

източник
Translate

Не използвайте "% * s" на буфер, който не е NULL прекратен (опакован), мислейки, че ще отпечата само поле "length".

източник
Translate

Спецификаторът на формата% 4s извежда низ в ширина на полето 4 - т.е. printf показва стойността с поне 4 позиции на знака.

Ако стойността за извеждане еlessпо-широка от 4 позиции на знака, стойността еright justifiedв полето по подразбиране.

Ако стойността еgreaterширок от 4 позиции на символа, ширината на полетоexpandsза да побере подходящия брой знаци.

За да подравните стойността вляво, използвайте отрицателно цяло число, за да зададете ширината на полето.

Препратки:Java ™ Как да програмирате (ранни обекти), десето издание

източник
Translate

* Причинява fprintf да запълва изхода, докато е с ширина n знака, където n е цяло число, съхранено в аргумента на функция, точно предхождащ този, представен от модифицирания тип.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
източник
Translate

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

Ширината не е посочена в низа за форматиране, а като допълнителен аргумент на цяло число, предхождащ аргумента, който трябва да бъде форматиран.

например:printf("%*s", 4, myValue);е равностоен наprintf("%4s", myValue);.

източник
Leave a Reply
You must be logged in to post a answer.
За автора