由于多字节的字符,在按单字节方式取出时,都会大于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);
这个就是ascii的编码问题,就是去除文本中值小于128的数据
其实很简单,在编码中,英文只占0~127,也就是一个字节中的最高位是0
汉字中,一个字节的最高位一定是1,并且两个字节组成一个汉字的编码
根据这个原理,那么读入这个文本,存储到一个字符串中,把小于128的单元去掉,组成一个新的数组,puts输出即可(这个系统自动两个配合显示一个汉字)
前提是你的dos窗口支持汉字显示,如果不支持,那就是乱码