C语言输入一段文字(英文和中文字符均有),要求输出其中的汉字问题。求代码。例如:

2024-11-17 17:54:04
推荐回答(2个)
回答1:

由于多字节的字符,在按单字节方式取出时,都会大于127(ASCII表上限),所以只要判断取出的字符对应整数值大于127,那么就可以判断为多字节字符的组成部分,于是得到下面这个程序。
char input[] = "我I爱Love你You";
char *p = input;

char output[50];
int i = 0;

while((*p) != '\0')
{
if ((unsigned char)(*p) > 0x7F)
{
output[i] = *p;
i++;
}

p++;
}

output[i]='\0';
printf("%s", output);

回答2:

这个就是ascii的编码问题,就是去除文本中值小于128的数据
其实很简单,在编码中,英文只占0~127,也就是一个字节中的最高位是0
汉字中,一个字节的最高位一定是1,并且两个字节组成一个汉字的编码

根据这个原理,那么读入这个文本,存储到一个字符串中,把小于128的单元去掉,组成一个新的数组,puts输出即可(这个系统自动两个配合显示一个汉字)
前提是你的dos窗口支持汉字显示,如果不支持,那就是乱码