首先声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。
在上一篇文章中,我们利用字符型变量处理了文本文件中的英文字符。但是,文本文件中不仅能输入英文字符,更多的时候我们需要处理汉字,如何用C语言程序读写这些汉字呢?大多数的C语言初学者或者已经学过C语言的学生对这个问题并不清楚,主要是因为教材上很少涉及这个问题。实际上汉字的读写是很实用的操作,它是基于汉语的文本搜索、自然语言处理等应用的基础。本文中将利用字符处理函数读写汉字,因此,也把这个问题当作是字符型数据的扩展应用。
文本文件中的英文字符是按照ASCII码存储的,每一个字符占一个字节,而汉字是按照汉字内码存储的,每一个汉字占两个字节(注意:汉字有不同编码:外码,国标码,内码,字形码等,请查阅相关资料)。汉字内码是在国标码的基础上加了8080H,换句话说,将国标码的两个字节的最高位置1,则变成了汉字内码。下面的例子可以显示文本文档中一个汉字的内码。
例1:在一个名为“a.txt”的文本文档中输入一个汉字“啊”,以十六进制的形式输出其内码。
#include"stdio.h"
int main()
{
char c;
freopen("a.txt","r",stdin);
//读出两个字节并输出
c = getchar();
printf("%X", c);
c = getchar();
printf("%X", c);
return 0;
}