| 首页 | 学习 | 计算机 | 小说 | 动漫 | 论文 | 军事 | 科技 | 教育 | 哲学 | 历史 | 英语 | 笑话 | 
您现在的位置: 【书斋】 >> 计算机 >> 程序编程 >> 计算机正文 用户登录 新用户注册
在C程序中处理汉字           ★★
在C程序中处理汉字
学习过C语言的人也许有时会遇到这样一个问题:如何用变量存储汉字以及对这些变量进行操作。目前许多C语言参考书中都没涉及到这个问题,程序中多为处理英文变量和英文字符串,涉及到汉字的情况也大都是在printf语句中输出提示信息或结果,如:

printf("请输入a,b的值:\n");
printf("输出功率为%s千瓦。\n",power);

   考虑到还有相当一部分人在学习和应用C语言,因此在这里向读者介绍一下笔者在这方面摸索出来的经验。

   存储汉字应该用字符数组,这一点是肯定的,关键问题是汉字在你的计算机系统上占几个字节。多数人会认为一个汉字肯定占两个字节,其实不然。汉字到底占几个字节,这是随系统不同而不同的,而且还依赖于软件环境,如Visual Basic中汉字占一个字节。可以在你的计算机上用strlen()函数测试一下,如:

printf("%d",strlen("计算机"));

   若输出为6,则每个汉字占两个字节;若输出12,则每个汉字占四个字节。大多数系统是每个汉字占两个字节的,即上述语句输出值为6。应当注意的是一个全角字符(包括标点符号)同汉字占据相同的字节。本文假定每个汉字占两个字节。

   这样你就可以用字符数组存储汉字了,但别忘了,由于C语言中字符串是以'\0'作为结束标记的,系统会自动加上这个标记符,而用strlen()函数测试的返回值不包括这个'\0',因此在定义和初始化字符数组时应当使数组长度最小为实际字符串长再加1,如:

static char name[7]="孙悟空"; /*数组长度为7说明最多可存放3个汉字*/

   如果把数组长度定义为6,系统在编译时并不报错,但是当运行程序时有时会莫名其妙地重复输出或多输出汉字,如果出现这种情况,应当首先考虑数组长度是否有问题。当然在定义的同时初始化可以省略数组长度,如:

static char array[]={"中国计算机软件专业技术水平考试"};

   同样可以定义二维数组,下面这个二维数组可以存放10个人名:

char member[10][8]; /*10个元素,每个元素中最多能放3个汉字(不是4个!)*/

   因为二维数组member[10][8]可以看成特殊的一维数组member[0],member[1],…,member[9],这些一维数组分别表示各行,而一行就表示了一个人名,因此如果想操作每个人名,只需写成member[0],member[1],…而不写成member[0][8],member[1][8],…。

   顺便提一下,在C编译窗口中输入汉字需要中文环境。如果读者用的是DOS操作系统,那么就需要安装CCDOS或UCDOS;如果是WIN95/98操作系统,则在DOS命令窗口中运行下面这个批处理文件即可,而不必另外安装中文DOS系统:

C:\WINDOWS>PDOS95

   在C编辑窗口中用Ctrl+空格键启动WIN95中文输入法。另外由于C程序是基于DOS的,因此编辑、编译C程序最好在全屏幕状态,否则容易出现问题。

   下面给出一个实例程序,它的功能是计算出输入年份的天干地支。

#include "string.h"
main()
{
int a,b,year;
char gz[6]; /*用来表示干支的字符变量*/
/*注意:下面两个语句中{}内的引号和逗号不能为全角字符*/
static char tg[10][3]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
static char dz[12][3]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戍","亥"};
printf("请输入一个年份:");
scanf("%d",&year);
a=(year-1804)%10; /*以1804年为参考年份,1804年是甲子年*/
b=(year-1804)%12;
strcpy(gz,tg[a]);
strcat(gz,dz[b]);
printf("%d年的干支为:%s\n",year,gz);
}

   运行结果:
请输入一个年份:1999
1999年的干支为:己卯

[1]

[1]

在百度搜索:在C程序中处理汉字
  • 上一个计算机:

  • 下一个计算机:
  • 相 关 文 章
  • 一个简易的UDP Proxy程序

  • 一个简易的proxy程序的开

  • 一个简易的proxy程序的开

  • 用C语言编写简单的接口程

  • 在C程序中显示汉字

  • C语言编的MD5主程序

  • 自解密的加密程序的制作

  • 写远程缓冲区溢出漏洞利

  • 简单的时间/日期客户程序

  • 怎样用C语言编写一个DOS

  • 自己写程序揭开cmos密码

  • 如何将多个C语言模块组合

  • C语言图像处理方法

  • 用C语言小程序来解决大问

  • Turbo C 在图形状态下快

  • 为 Linux 应用程序编写 

  • Linux 内核模块和驱动程

  • Linux 应用程序如何处理

  • 编写 Linux 操作系统下的

  • Linux 下面使用 mtrace 

  • 在C语言下使用I/O端

  • 用C语言实现Ping程序功能

  • Device Drivers(设备驱

  • The Linux Kernel Sourc

  • 第一篇:优美的程序需要

  • Linux下C语言编程--信号

  • 第七篇:从程序员到系统

  • 第六篇:从程序员到系统

  • 从程序员的角度看xwindo

  • 一个抓msg的程序(for bb