2014-10-11 3 views
6

Есть ли способ напечатать определенное количество символов пробела?Печать n пробелов - (f) Формат printf

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

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

int len = strlen (str); 

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

Но я ценю более эффективное решение.

+1

именно то, что мне нужно! Спасибо большое. Пожалуйста, пост в качестве ответа. – notnull

ответ

9

Попробуйте

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

Где ведущие и замыкающие являются внутр.
Для задней использовать только

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

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

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

+0

объяснение о том, как это работает, было бы хорошо, я просто смотрел на случайных персонажей прямо сейчас – Darkhogg

+0

. да, спасибо !! – Darkhogg

Смежные вопросы