C语言 UTF-8 字符判断及截断检测
在 C 语言中,可以使用以下代码判断一个字符是否是中文,并且是否被截断了:
#include <stdio.h>
#include <stdbool.h>
bool isChinese(char c) {
return (c & 0x80) && (c & 0x40);
}
bool isTruncated(char *s, int index) {
if (isChinese(s[index])) {
if ((s[index + 1] & 0x80) && (s[index + 1] & 0x40)) {
// 如果下一个字符也是中文,则未被截断
return false;
} else {
// 如果下一个字符不是中文,则被截断
return true;
}
} else {
// 如果不是中文,则未被截断
return false;
}
}
int main() {
char *s = '你好,世界!';
int len = strlen(s);
for (int i = 0; i < len; i++) {
printf('%c', s[i]);
if (isTruncated(s, i)) {
printf('(被截断)');
}
printf('\n');
}
return 0;
}
上述代码中,isChinese() 函数用于判断一个字符是否是中文,isTruncated() 函数用于判断一个字符是否被截断,main() 函数中的循环遍历字符串中的每个字符,如果某个字符被截断了,则在后面加上'(被截断)'的提示。
原文地址: https://www.cveoy.top/t/topic/mKOk 著作权归作者所有。请勿转载和采集!