У меня есть две функции: одна создает такие сообщения, Starting initialization...
а другая проверяет коды возврата и выходные данные "Ok"
, "Warning"
или "Error"
. Однако получаемый результат имеет разную длину:
Starting initialization...Ok.
Checking init scripts...Ok.
Как я могу получить что-то подобное:
Starting initialization... Ok.
Checking init scripts... Ok.
c
string
printf
pretty-print
Психоделия
источник
источник
-
ваши данные будут выровнены по правому краю в поле, ширину которого вы указали.printf
позволяет форматировать с помощью спецификаторов ширины. напримерprintf( "%-30s %s\n", "Starting initialization...", "Ok." );
Вы можете использовать спецификатор отрицательной ширины, чтобы указать выравнивание по левому краю, поскольку по умолчанию используется выравнивание по правому краю.
источник
Кроме того, если вам нужна гибкость в выборе
width
, вы можете выбрать один из следующих двух форматов (с усечением или без него):int width = 30; //no truncation uses %-*s printf( "%-*s %s\n", width, "Starting initialization...", "Ok." ); // output is "Starting initialization... Ok." //truncated to the specified width uses %-.*s printf( "%-.*s %s\n", width, "Starting initialization...", "Ok." ); // output is "Starting initialization... Ok."
источник
Также есть
%n
модификатор, который может помочь в определенных обстоятельствах. Он возвращает столбец, в котором до сих пор находилась строка. Пример: вы хотите написать несколько строк, которые находятся в пределах ширины первой строки, как таблица.int width1, width2; int values[6][2]; printf("|%s%n|%s%n|\n", header1, &width1, header2, &width2); for(i=0; i<6; i++) printf("|%*d|%*d|\n", width1, values[i][0], width2, values[i][1]);
напечатает 2 колонки одинаковой ширины по длине любых двух строк
header1
иheader2
может иметь. Я не знаю, есть ли у всех реализаций,%n
но у Solaris и Linux есть.источник
Существует также довольно низкотехнологичное решение - подсчет вручную добавлять пробелы, чтобы ваши сообщения выстраивались в линию. Ничто не мешает вам включать несколько конечных пробелов в строки сообщения.
источник
Начните с использования вкладок, \ t модификатора символа . Он переместится в фиксированное место (столбцы, терминальный жаргон). Однако это не помогает, если есть различия, превышающие ширину столбца (4 символа, если я правильно помню).
Чтобы исправить это, напишите свой "OK / NOK", используя фиксированное количество табуляций (5? 6?, Попробуйте), затем верните ( \ r ) без новой строки и напишите свое сообщение.
источник