在keil中如何定义和使用一个二维字符串数组?

[复制链接]
12324|5
 楼主| henrygliet 发表于 2007-4-15 14:18 | 显示全部楼层 |阅读模式
我在keil中定义了一个二维字符串数组:
unsigned char code workState[][3] = {"工作正常……  ",
                                     "等待关机……  ",
                                     "可以关机。    "};

然后提示有错误:

CCS812.C(20): error C243: 'array[]': string out of bounds

这是为什么呢?

在程序中我是这样使用的:
unsingned char string[];
string[]=workState[1];
……
是否是我的调用有问题???还请各位大侠多多帮忙~~~~谢谢先~~~~
lixun00 发表于 2007-4-15 14:57 | 显示全部楼层

把3改大点,lz应看下书

zgl7903 发表于 2007-4-15 21:30 | 显示全部楼层

试一试code unsigned char *workState[]

code unsigned char *workState[] = {"工作正常……  ",
                                     "等待关机……  ",
                                     "可以关机。    "};
ayb_ice 发表于 2007-4-16 07:56 | 显示全部楼层

与标准C是一样的,你的行列概念都搞错了...

rzm2001 发表于 2007-5-13 10:57 | 显示全部楼层

与标准C是一样的,你的行列概念都搞错了...

unsigned char code workState[3][20]={}
古道热肠 发表于 2007-5-13 11:35 | 显示全部楼层

写个样板程序给您,用指针吧!

#include <reg51.h>
#include <stdio.h>


//unsigned char code *workState[] = {"工作正常……  ",
//                                     "等待关机……  ",
//                                     "可以关机。    "};
unsigned char code *workState[] = {"Follow me",
                                     "how are you",
                                     "telephone to me"};

//然后提示有错误:

//CCS812.C(20): error C243: 'array[]': string out of bounds

//这是为什么呢?

//在程序中我是这样使用的:
//unsingned char string[];
//string[]=workState[1];
//……
//是否是我的调用有问题???还请各位大侠多多帮忙~~~~谢谢先~~~~

void main(void)
{
    unsigned char *ptrCurrent;
    unsigned char TestOneChar;
    
    SCON  = 0x50;                /* SCON: mode 1, 8-bit UART, enable rcvr      */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
    TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
    TR1   = 1;                  /* TR1:  timer 1 run                          */
    TI    = 1;                  /* TI:   set TI to send first char of UART    */

    while(1)
    {
        ptrCurrent = workState[0]; 
        printf(ptrCurrent);
        printf("\n");
        ptrCurrent = workState[1];
 
        TestOneChar = ptrCurrent[1];
        TestOneChar = ptrCurrent[2];
        TestOneChar = ptrCurrent[3];

        printf(ptrCurrent);
        printf("\n");
        ptrCurrent = workState[2]; 
        printf(ptrCurrent);
        printf("\n");
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

89

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部