LINUX.ORG.RU

tabs vs whitespaces.

 


0

2

Создаю CLI для приложения. Нет опыта что является «the best way» для выравнивания полей в выводе. К примеру:

printf ("short name\t\t\t: %d", value1);
printf ("long name bla-bla\t: %d", value2);

Или выравнивать пробелами? Что меньше зависит от консолей и шрифтов?

Спасибо!

Если для себя, то табуляции. Если для вообще, то, пожалуй, пробелы.

Eddy_Em ☆☆☆☆☆ ()

Табы вообще использовать не стоит

anonymous ()
printf ("short name\t\t\t: %100500d", value1);
printf ("long name bla-bla\t: %100500d", value2);

Так не?

yacuken ★★★★ ()

Для выравнивания - только пробелы, для отступов - только табуляция. И дело здесь не в зависимости от консолей и шрифтов.

E ★★★ ()

Кстати, в аду приготовлено местечко для тех, кто разделяет пробелом имя и скобку в вызове функции.

bj ()
Ответ на: комментарий от E

А goto смертный грех. Какие еще мантры знаешь? К тому же вопрос был про форматирование вывода, а не кода.

bj ()

А нужно ли вообще выравнивание в данном случае?

CARS ★★★★ ()
Ответ на: комментарий от bj

К тому же вопрос был про форматирование вывода, а не кода.

Где ты у меня в сообщении увидел слово «код»?

Какие еще мантры знаешь?

Кстати, в аду приготовлено местечко для тех, кто разделяет пробелом имя и скобку в вызове функции.

E ★★★ ()

не надо выравнивать, от этого потом очень тяжело парсить. самое лучше — использовать один «\t», это прекрасно понимает awk и любые парсеры csv.

а если ты считаешь, что вывод твоей программы никто не будет парсить, он только для человека — тогда не насилуй пользователей и сделай гуй.

anonymous ()

Если делаешь табличку в консоли, могу посоветовать такой рецепт:

printf("%-20s %5d %15s\n", "short name:", value1, somechar);
printf("%-20s %5d %15s\n", "long name bla-bla:", value2, somechar);

Или вообще формат в дефайн запилить для удобства:

#define PFORMAT "%-20s %5d %15s\n"
printf(PFORMAT, "short name:", value1, somechar);
printf(PFORMAT, "long name bla-bla:", value2, somechar);

Во-втором случае подправить числа можно в одном месте и вся таблица будет переформатирована.

nickleiten ★★★ ()
Ответ на: комментарий от E

Где ты у меня в сообщении увидел слово «код»?

Только в коде есть отступы и выравнивание. И соответствующие холиворы.

в аду приготовлено местечко для тех, кто разделяет пробелом имя и скобку в вызове функции.

Это не мантра, а суровая практика, тут просто не может быть двух мнений.

bj ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.