我有一份土耳其单词列表,需要比较它们的长度。但是由于一些土耳其字符不是ASCII,所以我无法正确比较它们的长度。非ASCII的土耳其字符占用2个字节。
例如:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[] = "ab";
char s2[] = "çş";
printf("%d\n", strlen(s1)); // it prints 2
printf("%d\n", strlen(s2)); // it prints 4
return 0;
}
我的朋友说可以通过以下代码在Windows上实现:
system("chcp 1254");
他说它会将土耳其字符填充到扩展ASCII表中。但是在Linux上不起作用。
有没有一种方法可以在Linux中实现这个功能?
chcp 1254
命令用于在 Windows 控制台上设置代码页为土耳其语,表示高于一个字节的字符(约为 0xA0-FF)需要以土耳其语方式解释(如您所见到的字形)。在 Linux 上,这些字符是以 utf8 编码的,按照 @MatteoItalia 上面提供的方法很容易对它们进行计数。 - Déjà vustrlen(s1)
中使用"%d"
?其他选择包括"%u"
,"%zu"
,... - chux - Reinstate Monica