Печать 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 считывает трейлинг как ширину поля, в котором будет напечатан следующий аргумент, другой пробел.