LINUX.ORG.RU

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

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

Проверил, действит. выводит лишний пробел при при пустой строке.

Кстати, у вас какая-то точка затесалась перед с, это я понял опечатка.

Т.е. лучше так

printf("%*s%s|\n", 30-mbwidth(str), "" , str);

А если допустим в словаре будут только англ. строки (для к-рых уже известно, что strlen(s) == mbwidth(s) и проще делать «%30s»), а я буду всегда вызывать mbwidth в printf-е. Не будет ли (без проверки mbwidth(s)!= strlen(s) это давать небольшую задержку при форматировании вывода?

Проще написать, чем словами объяснять

if (mbwidth(str)!= strlen(str))
  printf("%*s%s|\n", 30-mbwidth(str), "" , str);
else
  printf("%30s|\n", str);

Просто у меня четко есть словари где одни англ. строки и где англ с рус. смешаны. Так зачем для англ. строк вызывать напрасно mbwidth?

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

Проверил, действит. выводит лишний пробел при при пустой строке.

Кстати у вас какая-то точка затесалась перед с, это я понял опечатка.

Т.е. лучше так

printf("%*s%s|\n", 30-mbwidth(str), "" , str);

А если допустим в словаре будут только англ. строки (для к-рых уже известно, что strlen(s) == mbwidth(s) и проще делать «%30s»), а я буду всегда вызывать mbwidth в printf-е. Не будет ли (без проверки mbwidth(s)!= strlen(s) это давать небольшую задержку при форматировании вывода?

Проще написать, чем словами объяснять

if (mbwidth(str)!= strlen(str))
  printf("%*s%s|\n", 30-mbwidth(str), "" , str);
else
  printf("%30s|\n", str);

Просто у меня четко есть словари где одни англ. строки и где англ с рус. смешаны. Так зачем для англ. строк вызывать напрасно mbwidth?

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

Проверил, действит. выводит лишний пробел при при пустой строке.

Т.е. лучше так

printf("%*s%s|\n", 30-mbwidth(str), "" , str);

А если допустим в словаре будут только англ. строки (для к-рых уже известно, что strlen(s) == mbwidth(s) и проще делать «%30s»), а я буду всегда вызывать mbwidth в printf-е. Не будет ли (без проверки mbwidth(s)!= strlen(s) это давать небольшую задержку при форматировании вывода?

Проще написать, чем словами объяснять

if (mbwidth(str)!= strlen(str))
  printf("%*s%s|\n", 30-mbwidth(str), "" , str);
else
  printf("%30s|\n", str);

Просто у меня четко есть словари где одни англ. строки и где англ с рус. смешаны. Так зачем для англ. строк вызывать напрасно mbwidth?

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

Т.е. так лучше?

printf("%*s%s|\n", 30-mbwidth(str), "" , str);

А если допустим в словаре будут только англ. строки (для к-рых уже известно, что strlen(s) == mbwidth(s) и проще делать «%30s»), а я буду всегда вызывать mbwidth в printf-е. Не будет ли (без проверки mbwidth(s)!= strlen(s) это давать небольшую задержку при форматировании вывода?

Проще написать, чем словами объяснять

if (mbwidth(str)!= strlen(str))
  printf("%*s%s|\n", 30-mbwidth(str), "" , str);
else
  printf("%30s|\n", str);

Просто у меня четко есть словари где одни англ. строки и где англ с рус. смешаны. Так зачем для англ. строк вызывать напрасно mbwidth?

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

Т.е. так лучше?

printf("%*s%s|\n", 30-mbwidth(str), "" , str);

А если допустим в словаре будут только англ. строки (для к-рых уже известно, что strlen(s) == mbwidth(s) и проще делать «%30s»), а я буду всегда вызывать mbwidth в printf-е. Не будет ли (без проверки mbwidth(s)!= strlen(s) это давать небольшую задержку при форматировании вывода?

Проще написать, чем словами объяснять

if (mbwidth(str)!= strlen(str))
  printf("%*s%s|\n", 30-mbwidth(str), "" , str);
else
  printf("%30s|\n", str);

Просто у меня четко есть словари где одни англ. строки и где англ с рус. смешаны.

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

Т.е. так лучше?

printf("%*s%s|\n", 30-mbwidth(str), "" , str);

А если допустим в словаре будут только англ. строки (для к-рых уже известно, что strlen(s) == mbwidth(s) и проще делать «%30s»), а я буду всегде вызывать mbwidth в printf-е. Не будет ли (без проверки mbwidth(s)!= strlen(s) это давать небольшую задержку при форматировании вывода?

Проще написать, чем словами объяснять

if (mbwidth(str)!= strlen(str))
  printf("%*s%s|\n", 30-mbwidth(str), "" , str);
else
  printf("%30s|\n", str);

Просто у меня четко есть словари где одни англ. строки и где англ с рус. смешаны.