我正在编写一些程序来计算文件中 UTF-8 字符的数量。我已经编写了基本代码,但现在,我陷入了应该计算字符的部分。到目前为止,这些是我所拥有的:
文本文件里面有什么:
黄埔炒蛋
你好
こんにちは
여보세요
到目前为止我编写的代码:
#include <stdio.h>
typedef unsigned char BYTE;
int main(int argc, char const *argv[])
{
FILE *file = fopen("file.txt", "r");
if (!file)
{
printf("Could not open file.\n");
return 1;
}
int count = 0;
while(1)
{
BYTE b;
fread(&b, 1, 1, file);
if (feof(file))
{
break;
}
count++;
}
printf("Number of characters: %i\n", count);
fclose(file);
return 0;
}
我的问题是,如何对计算 UTF-8 字符的部分进行编码?我尝试在 GitHub 和 YouTube 中寻找灵感,但还没有找到任何适合我的代码的东西。
编辑:最初,此代码打印文本文件有 48 个字符。但考虑到UTF-8,它应该只有18个字符。
See: https://en.wikipedia.org/wiki/UTF-8#Encoding
每个 UTF-8 序列包含一个起始字节和零个或多个额外字节。
额外字节总是以位开头10
并且第一个字节永远不会以该序列开始。
您可以使用该信息仅计算每个 UTF-8 序列中的第一个字节。
if((b&0xC0) != 0x80) {
count++;
}
请记住,如果文件包含无效的 UTF-8 序列,这将会中断。
此外,“UTF-8 字符”可能有不同的含义。例如“
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)