找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1308|回复: 3
收起左侧

请教关于Keil C51单片机中的汉字数组问题

[复制链接]
ID:71233 发表于 2023-7-27 17:11 | 显示全部楼层 |阅读模式
用到LCD屏,需要显示汉字,因此需要汉字编码数组。但是,keil可能对中文不太友好,所以出现如下的问题.
单片机用STC12C5A60S2。
先定义一个汉字索引数组:
  1. unsigned char code index_hanzi[] = {"年月日正一二"};
复制代码
然后写了一个搜索汉字的函数:
  1. uchar find_hanzi(uchar *hz) // 搜索汉字索引,返回汉字的位置
  2. {
  3.   uchar i;
  4.   for (i = 0; i < (sizeof(index_hanzi) / 2); i++)
  5.   {
  6.     if (index_hanzi[i * 2] == *hz && index_hanzi[i * 2 + 1] == *(hz + 1))
  7.     {
  8.       return i;    }
  9.   }
  10.   return 255;
  11. }
复制代码
然后用打印函数进行检验:
  1.   printf("%d\r\n", (uint)find_hanzi("年"));
  2.   printf("%d\r\n", (uint)find_hanzi("月"));
  3.   printf("%d\r\n", (uint)find_hanzi("日"));
  4. printf("%d\r\n", (uint)find_hanzi("正"));
  5.   printf("%d\r\n", (uint)find_hanzi("一"));
  6.   printf("%d\r\n", (uint)find_hanzi("二"));
复制代码
结果打印如下:
1.jpg
其中前三个汉字可以正常搜索到,而后面三个汉字无法在汉字数组中搜索到。
使用其他汉字进行检验,也出现同样的问题,
就是一些汉字可以搜索得到,一些汉字无法搜索到,不知道是什么原因。
请各位大佬指教,谢谢!
回复

使用道具 举报

ID:275826 发表于 2023-7-27 20:10 | 显示全部楼层
是你电脑系统问题吧,在我电脑里运行正常,都能正确搜索到
回复

使用道具 举报

ID:320306 发表于 2023-7-28 18:03 | 显示全部楼层
会不会你有别的程序,超出内存范围了?用静态数组试试?
回复

使用道具 举报

ID:627942 发表于 2023-7-28 21:53 | 显示全部楼层
unsigned char code index_hanzi[] = {"年月日正\xfd一二"};
printf("%d\r\n", (uint)find_hanzi("正\xfd"));
有些汉字需要加\xfd,至于为什么,你可以网上查一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表