История изменений
Исправление PPP328, (текущая версия) :
Фигню написали, ему нужно выравнивает справа, а не слева. Плюс у вас всё еще фигня с тем, что strlen даёт bytes а не characters.
ТС, тебе написали еще в той теме, что в общем случае задача не решается, хоть обмажься wchar. Композитные символы и суррогатные пары ты сам не проанализируешь, потому что это еще и от шрифта зависит
#include <stdio.h>
#include <string.h>
int main(void) {
const char *s1 = "message󠅟󠅘󠄐󠅝󠅩󠄜󠄐󠅩󠅟󠅥󠄐󠅖󠅟󠅥󠅞󠅔󠄐󠅤󠅘󠅕󠄐󠅘󠅙󠅔󠅔󠅕󠅞󠄐󠅝󠅕󠅣󠅣󠅑󠅗󠅕󠄐󠅙󠅞󠄐󠅤󠅘󠅕󠄐󠅤󠅕󠅨󠅤󠄑";
const char *s2 = "message";
printf("%s: %d\n", s1, (int)strlen(s1));
printf("%s: %d\n", s2, (int)strlen(s2));
return 0;
}
На разных шрифтах, рендерах, движках и консолях будет по разному выглядеть. В хромаке у меня показывает графически одинаково (как и должно быть), online compier рендерит пробелы, консоль рендерит непечатные символы.
message: 199
message: 7
Исправление PPP328, :
Фигню написали, ему нужно выравнивает справа, а не слева. Плюс у вас всё еще фигня с тем, что strlen даёт bytes а не characters.
ТС, тебе написали еще в той теме, что в общем случае задача не решается, хоть обмажься wchar. Композитные символы и суррогатные пары ты сам не проанализируешь, потому что это еще и от шрифта зависит
Исходная версия PPP328, :
Фигню написали, ему нужно выравнивает справа, а не слева. Плюс у вас всё еще фигня с тем, что strlen даёт bytes а не characters