Left-pad printf с пробелами


Как я могу заполнить строку пробелами слева при использовании printf?

например, я хочу напечатать "Hello" с 40 пробелами перед ним.

кроме того, строка, которую я хочу напечатать, состоит из нескольких строк. Нужно ли печатать каждую строку отдельно?

EDIT: просто чтобы быть ясным, я хочу, чтобы перед каждой строкой было напечатано ровно 40 пробелов.

4 85

4 ответа:

Если вы хотите, чтобы слово "Hello" печаталось в столбце шириной 40 символов с пробелами слева, используйте следующее.

char *ptr = "Hello";
printf("%40s\n", ptr);

Это даст вам 35 пробелов, а затем слово "Привет". Вот как вы форматируете материал, когда знаете, как широко вы хотите столбец, но данные меняются (ну, это один как вы можете сделать это).

Если вы знаете, что хотите ровно 40 пробелов, то какой-то текст, просто сохраните 40 пробелов в константе и распечатайте их. Если вы нужно напечатать несколько строк, либо использовать несколько printf операторы, подобные приведенным выше, или делают это в цикле, изменяя значение ptr каждый раз.

Я использую эту функцию для отступа моего вывода (например, для печати древовидной структуры). Элемент indent - количество пробелов перед строкой.

void print_with_indent(int indent, char * string)
{
    printf("%*s%s", indent, "", string);
}
int space=40;
printf("%*s",space,"Hello");

этот оператор зарезервирует столбец из 40 символов, выведет строку в конце столбца (не после столбца,в последних столбцах.Общее количество используемых столбцов будет 40). То же самое можно использовать для цифр и целых чисел следующим образом

printf("%*d",space,10);
printf("%*c",space,'');

этот метод использования переменных пробелов полезен в вызовах функций, где требуется переменное количество пробелов.Эти операторы по-прежнему будут работать с постоянными целыми числами следующим образом

printf("%*d",10,10);
printf("%*c",20,'');
printf("%*s",30,"Hello");

надеюсь, это поможет кто-то вроде меня в будущем.

если вы хотите ровно 40 пробелов перед строкой, то вы должны просто сделать:

printf("                                        %s\n", myStr );

если это слишком грязно, вы можете сделать (но это будет медленнее, чем вручную вводить 40 пробелов): printf("%40s%s", "", myStr );

если вы хотите, чтобы строка была выстроена в столбце 40 (то есть до 39 пробелов, продолжающих ее так, что самый правый символ находится в столбце 40), то сделайте это: printf("%40s", myStr);

вы также можете поставить "до" 40 пробелов после строки, выполнив: printf("%-40s", myStr);