По умолчанию printf()
, кажется, выравнивает строки справа.Центрирующие строки с printf()
printf("%10s %20s %20s\n", "col1", "col2", "col3");
/* col1 col2 col3 */
Я могу также выровнять текст влево, как это:
printf("%-10s %-20s %-20s", "col1", "col2", "col3");
Есть быстрый способ центрирования текста? Или мне нужно написать функцию, которая превращает строку, такую как test
, в (space)(space)test(space)(space)
, если ширина текста для этого столбца равна 8?
Первое предложение: Как это может быть impl'd без утечки памяти? – kevinarpe
Если вы предварительно распределите некоторые буферы на основе некоторых критериев, которые не кажутся необоснованными (например, не более 20 аргументов будут центрированы для одного printf, и ни один из центрированных результатов не будет длиннее 200 байтов), вы можете позволить центру функция просто вращает буферы при каждом вызове. – hlovdal