当字符串中存在非英文字符时,Strlen 函数给出错误的长度

问题描述 投票:0回答:1

我有一个程序也接受非英语字符作为输入字段。因为我们使用了strlen,所以当存在非英文字符时,在计算字符串长度时,它无法给出预期的长度。对于输入 nova,输出为 4,而对于输入“ñova”,输出为 5,而输出应为 4。

  1. strlen(“新星”)= 4
  2. strlen(“ñova”) = 5

在第二种情况下,我期望输出本身为 4

c encoding string-length strlen non-english
1个回答
0
投票

请记住,

strlen
返回字符串中
char
的计数,这不一定与打印时可见字形的数量相同。

结果将取决于您系统的字符编码 - 使用 ISO-8859.1,

"ñova"
{ 241, 111, 118, 97, 0}
(长度 4)相同,但如果您使用 UTF-8,则
ñ
是一个多字符编码字节字符,字符串表示为
{195, 177, 111, 118, 97, 0}
(长度 5)。

© www.soinside.com 2019 - 2024. All rights reserved.