Escape последовательность в printf
Подскажите пожалуйста, есть ли какой-нибудь способ изменять количество отступов (в данном случае "3") в такой конструкции "%3d" с помощью цикла for, чтобы несколько вызовов printf были с разным количеством отступов?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Вместо литерала (%3d) ширину поля можно задать звёздочкой (%*d). В списке аргументов должно быть целое значение с действительной шириной:
// ширина
// ------
// | |
// v |
printf("%*d\n", w, d);
// ^ |
// | |
// --------
// значение
- (optional) integer value or * that specifies minimum field width. ... In the case when * is used, the width is specified by an additional argument of type
int, which appears before the argument to be converted ...
#include <stdio.h>
int main() {
int d = 123;
for (int w = 0; w < 20; ++w) {
printf("%*d\n", w, d);
}
}
$ gcc pad.c $ ./a.out 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123