如何从文件中读取单个汉字?

来源:百度知道 编辑:UC知道 时间:2024/06/02 20:17:16
就是怎么把文件中的句子分解成单个字,处理英文倒是不难,但是中文汉字就不知道了?
哪位大虾可以讲解下?
有个分析思路也行

关键看unicode码,英文和汉字的编码都不相同的
英文字符的unicode码的高字节为0,汉字不为0

比如:
英文字符‘E’的unicode码是0x0045
汉字“杭”的unicode码是0x676D

在计算机中,汉字是两个字节的,并且每个字节的最高位是1,可以用汉字的这个特点来分离出汉字.
如:
unsigned char buff[100];/*保存英文和汉字的缓冲区*/
unsigned char hanZi[3];/*保存一个汉字的缓冲区,多一个作结束符*/
int i;
int j;
.......这处的操作是从文件中读英文和汉字到buff中.
for(i=0,j=0;i<100;i++)/*对整个缓冲区处理*/
{
if(buff[i]&0x80)/*如果该字节的最高位是1,则是汉字*/
{
hanZi[j]=buff[i];/*取得汉字的第一个字节*/
j++;/*移动汉字的缓冲区偏移量*/
i++;/*英文和汉字的缓冲区偏移量*/
hanZi[j]=buff[i];/*得到汉字的第二个字节*/
.....可以对这个汉字处理了
}
else
{
.....处理英文.
}
}
经过上面的程序后,所有汉字将被分离

/*如果含有汉字的文本都是全角字符,那么很容易,只要定义一个a[N][2]字符数组,那么每行的元素构成一个全角字符。
下面给出分离全角字符的程序。你在当前目录建立一个含有汉字的1.txt文件,本程序将汉字以回车符分离成单个汉字。
如果又含有半角字符,那么通过分析unicode码大小,可以区别于汉字。
*/

#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
#define N 10

main(){
int i,j;