LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Просто посчитай количество вызовов mbwidth

Твой вариант с условием

size_t width = mbwidth(...); // 1x mbwidth
if (width != strlen(...))  // 1x strlen
  printf("%*s%s|\n", 30-width, ...);
else 
  printf("%30s"); 

Мой предлагаемый вариант

size_t width = mbwidth(...); // 1x mbwidth
printf("%*s%s|\n", 30-width, ...);
У меня на один strlen меньше, в остальном так же, только еще сократил количество кода, и веток с условиями которые нужно отлаживать.

Исправление MOPKOBKA, :

Просто посчитай количество вызовов mbwidth

Твой вариант с условием

size_t width = mbwidth(...); // 1x mbwidth
if (width != strlen(...))  // 1x strlen
  printf("%*s%s|\n", width, ...);
else 
  printf("%30s"); 

Мой предлагаемый вариант

size_t width = mbwidth(...); // 1x mbwidth
printf("%*s%s|\n", width, ...);
У меня на один strlen меньше, в остальном так же, только еще сократил количество кода, и веток с условиями которые нужно отлаживать.

Исходная версия MOPKOBKA, :

Просто посчитай количество вызовов mbwidth

Твой вариант с условием

size_t width = mbwidth(); // 1x mbwidth
if (width != strlen(...))  // 1x strlen
  printf("%*s%s|\n", width, ...);
else 
  printf("%30s"); 

Мой предлагаемый вариант

size_t width = mbwidth(); // 1x mbwidth
printf("%*s%s|\n", width, ...);