4
我有与C的printf宽度调节问题printf的宽度修改为特殊字符
例如:
char a[] = "o", b[] = "l";
printf("%-3s %s", a, b);
控制台输出给我串3米之间的空间,但是当我改变“O”到“ ó“,控制台之间显示2个空格。每次我在字符串中使用像“ł”,“ó”,“ś”这样的字符时,宽度修饰符会缩短1个符号,为什么会发生这种情况?
OS X 10.11(厄尔尼诺上尉)
您可能会感兴趣'printf(“%zu \ n”,strlen(a));' –
Mac OSX使用UTF-8编码,因此每个代码点使用可变数量的* bytes * - 单词' char'是误导性的,意味着*基本执行字符集*的字节和字符;然而,不是所有的扩展字符都可以用一个8位字节表示。 –