我有一个程序也接受非英语字符作为输入字段。因为我们使用了strlen,所以当存在非英文字符时,在计算字符串长度时,它无法给出预期的长度。对于输入 nova,输出为 4,而对于输入“ñova”,输出为 5,而输出应为 4。
在第二种情况下,我期望输出本身为 4
请记住,
strlen
返回字符串中char
的计数,这不一定与打印时可见字形的数量相同。
结果将取决于您系统的字符编码 - 使用 ISO-8859.1,
"ñova"
与 { 241, 111, 118, 97, 0}
(长度 4)相同,但如果您使用 UTF-8,则 ñ
是一个多字符编码字节字符,字符串表示为 {195, 177, 111, 118, 97, 0}
(长度 5)。