Левая панель printf с пробелами

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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");

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

Ответ 4

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

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

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

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

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