我在C
中遇到printf width修饰符的问题示例:
char a[] = "o", b[] = "l";
printf("%-3s %s", a, b);
控制台输出在字符串之间给了我3个空格,但当我将“o”改为“ó”时,控制台之间显示2个空格。每当我在字符串中使用“ł”,“ó”,“ś”等字符时,宽度修饰符会缩短1个符号,为什么会发生这种情况?
OS X 10.11(El Captain)
答案 0 :(得分:3)
"特别"当您显示它们时,需要更多字节(char
)来表示字符串。您3
的任意限制是不够的,将其提高到合适的值。
此外,表示此类特殊字符的方式和长度取决于系统。对于可移植代码,你永远不应该做出这样的任意假设。