Вопрос

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

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

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

РЕДАКТИРОВАТЬ: просто чтобы было ясно, я хочу, чтобы перед каждой строкой было напечатано ровно 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, 'x');

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

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

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

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

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

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

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

Вы также можете поставить " до " 40 пробелов ПОСЛЕ строки:      printf ("% - 40 с " ;, myStr);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top