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

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

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

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

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

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

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

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

Если вы знаете, что хотите ровно 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 пробелов AfTER строку, выполнив: printf("%-40s", myStr);