Печать N пробелов - (f)формат printf

есть ли способ напечатать определенное количество пробелов?

Я не могу использовать min. ширина пробелов""%-5s"", потому что это приведет к "str "..., и мне нужно вывести "str" ...

Я знаю, что могу сделать это глупо:

int len = strlen (str);

printf ("/"%s/"", str);
for (int i = len - 5; i > 0; i--)
   printf (" ");

но я был бы признателен за более эффективное решение.

1 ответов


попробовать

printf ( "%*c\"%s\"%*c", leading, ' ', str, trailing, ' ');

где ведущий и трейлинг-int.
Для трейлинга используйте только

printf ( "\"%s\"%*c", str, trailing, ' ');

подобная модификация может быть сделана только для ведущих

редактировать
Спецификатор ширины позволяет использовать звездочку для обеспечения переменной ширины.
В этом случае %*c говорит printf получить следующий аргумент и использовать его в качестве ширины символа.
Он первоначально считывает ведущий и использует его для ширины поля, в котором нужно напечатать персонаж, космический персонаж. Затем печатается цитата,\". Формат %s печатает следующий аргумент str. Печатается другая цитата, а затем % * c считывает трейлинг как ширину поля, в котором будет напечатан следующий аргумент, другой пробел.