在 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() 函数中的循环遍历字符串中的每个字符,如果某个字符被截断了,则在后面加上'(被截断)'的提示。

C语言 UTF-8 字符判断及截断检测

原文地址: https://www.cveoy.top/t/topic/mKOk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录