2008-11-16 2 views
76

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

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

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

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

ответ

81

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

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

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

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

+3

dunno слишком много о флажках формата. но я подозреваю printf ("% 40s% s \ n", "", ptr); можно использовать для прокладки 40 мест? – 2008-11-16 04:06:26

+0

Да, это всегда давало вам 40 пробелов перед содержимым указателя. Это приятное решение, но если вам нужно сделать это много, я думаю, что константа с 40 пробелами будет быстрее.Я не знаю, может ли компилятор оптимизировать форматы printf. – 2008-11-16 04:13:56

+2

@Bill: компилятор не может оптимизировать формат printf(). – 2008-11-16 04:36:01

13

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

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

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

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

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

49

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

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

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

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

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

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

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

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