找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 650|回复: 8
收起左侧

单片机Keil C语言 中文编码数组提示字符串越界的解决方法

[复制链接]
ID:289218 发表于 2023-4-8 18:57 | 显示全部楼层 |阅读模式
我在群里下载了LCD显示例程:
2.png
编译时提示:main.c(215):错误C243:“array[]”:字符串越界
1.png

麻烦哪位高手能给与指点,谢谢!
回复

使用道具 举报

ID:289218 发表于 2023-4-8 18:59 | 显示全部楼层
例程部份代码如下:
typedef struct typFNT_GB16 // 汉字字模显示数据结构
{
uchar Index[2];//汉字内码索引
uchar Msk[24]; //点阵码数据
};

struct typFNT_GB16 code GB_16[]=
{ // 显示为12*12
"中",0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,
"文",0x08,0x00,0x04,0x40,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,
"测",0x9E,0x20,0x52,0x20,0x12,0xA0,0x96,0xA0,0x56,0xA0,0x56,0xA0,0x56,0xA0,0xD6,0xA0,0x44,0xA0,0x4A,0x20,0x71,0x60,0x00,0x00,
"试",0x80,0xC0,0x40,0xA0,0x5F,0xE0,0x00,0x80,0xC0,0x80,0x4F,0x80,0x44,0x80,0x44,0x80,0x57,0xA0,0x6C,0x60,0x40,0x20,0x00,0x00,
"液",0x81,0x00,0x5F,0xE0,0x25,0x00,0x85,0xC0,0xAA,0x40,0x4E,0xC0,0x5A,0x40,0x49,0x80,0xC8,0x80,0x49,0x40,0x4E,0x20,0x00,0x00,
"晶",0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80,0x00,0x00,0x7B,0xE0,0x4A,0x20,0x7B,0xE0,0x4A,0x20,0x7B,0xE0,0x00,0x00,
"显",0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x4A,0x40,0x2A,0x40,0x2A,0x80,0x0B,0x00,0xFF,0xE0,0x00,0x00,
"示",0x00,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x14,0x80,0x24,0x40,0x44,0x20,0x84,0x20,0x1C,0x00,0x00,0x00,};
回复

使用道具 举报

ID:883242 发表于 2023-4-8 19:39 | 显示全部楼层
213行不要加typFNT_GB16类型,用char型,然后定义一个typFNT_GB16类型的指针指向这个数组就可以用了。
回复

使用道具 举报

ID:289218 发表于 2023-4-8 19:51 | 显示全部楼层
Hephaestus 发表于 2023-4-8 19:39
213行不要加typFNT_GB16类型,用char型,然后定义一个typFNT_GB16类型的指针指向这个数组就可以用了。

谢谢!我马上试试~
回复

使用道具 举报

ID:289218 发表于 2023-4-8 20:39 | 显示全部楼层
Hephaestus 发表于 2023-4-8 19:39
213行不要加typFNT_GB16类型,用char型,然后定义一个typFNT_GB16类型的指针指向这个数组就可以用了。

修改为:
uchar code GB_16[]=
{ // 显示为12*12

keil提示信息:
main.c(215): error C242: 'array[]': too many initializers
回复

使用道具 举报

ID:289218 发表于 2023-4-8 20:40 | 显示全部楼层
Hephaestus 发表于 2023-4-8 19:39
213行不要加typFNT_GB16类型,用char型,然后定义一个typFNT_GB16类型的指针指向这个数组就可以用了。

如果把中文索引去掉,就不会提示字符串越界~
回复

使用道具 举报

ID:94031 发表于 2023-4-8 20:51 | 显示全部楼层
wlhuang 发表于 2023-4-8 20:40
如果把中文索引去掉,就不会提示字符串越界~

中文索引放在注释里,不要出现在程序里。
回复

使用道具 举报

ID:939553 发表于 2023-4-8 21:55 | 显示全部楼层
"中" 在存储时是这样的,0xD6,0XD0,0X00,是三个字节,导致你越界了
回复

使用道具 举报

ID:939553 发表于 2023-4-8 21:56 | 显示全部楼层
你应该是直接转化成0xd6,0xd0存储即可
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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