C语言检测输入中文长度
时间: 2024-11-15 18:34:36 浏览: 15
C语言实现输入密码时隐藏并用*显示实现
在C语言中,直接检测输入的中文字符长度并不像检测英文字符串那样简单,因为中文字符通常由两个字节(UTF-8编码下)表示,而非单个字节。你可以通过遍历输入的二进制数据来计算长度,但这需要对每个字节进行判断。
这里提供一种简单的思路:如果读取的是UTF-8编码的文本流,可以先读取一个字节,然后检查它是否在0x80到0xBF(第一个字节范围)之间,如果是,则继续读取下一个字节,因为第二字节通常是0xXX;如果不是,就认为前面已经构成了一个完整的中文字符,并增加计数。然后跳过已处理的字节,继续这个过程直到遇到结束符(如'\n')。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <wchar.h>
size_t countChineseChars(char *input) {
size_t len = 0;
while (input[len] != '\0') {
char firstByte = input[len];
if ((firstByte & 0xC0) == 0x80) { // 检查是否为第二个字节
++len; // 已经有一个完整字符,加一
} else if ((firstByte & 0xE0) == 0xC0) { // 检查是否为第三个字节
if ((input[len + 1] & 0xC0) == 0x80) {
++len; // 又有一个字节,加一
} else {
// 如果不是合法的第三个字节,结束循环
break;
}
} else {
len++; // 单字节字符
}
++len;
}
return len;
}
int main() {
char input[100]; // 假设输入不超过100个字符
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 移除换行符
size_t chineseLen = countChineseChars(input);
printf("输入中文字符长度: %zu\n", chineseLen);
return 0;
}
```
阅读全文