wangsheng108 发表于 2016-7-4 22:23:23

我要求助了,被C的类型搞死了


问题大致如下:

这是一个类似于输入框的程序,当键盘输入数字时,输入框的数字会在后面追加一位,当输入擦除键的时候,输入框的数字会删除最后一位。

下面的程序中:
strNumValue是一个unsigned char类型的公共字符数组变量
strNum是输入的数字,是unsigned char类型的字符变量

编译时,无法通过,提示strlen(strNumValue)函数从unsigned char*到const char*非法转换。
请高手看看问题出在哪里了,怎么改?

unsigned char strNumValue;

//……
void SetNumValue( unsigned char strNum )
{
        if(strNum=='-')
        {
                strNumValue = '\0';//将数组的最后一个数字字符改为结束标记
        }
        else
        {
                strcat(strNumValue,strNum);
        }
//……

unsigned char strNumValue;

……
void SetNumValue( unsigned char strNum )
{
        if(strNum=='-')
        {
                strNumValue = '\0';//将数组的最后一个数字字符改为结束标记
        }
        else
        {
                strcat(strNumValue,strNum);
        }
……

pathletboy 发表于 2016-7-5 11:29:05

本帖最后由 pathletboy 于 2016-7-5 11:32 编辑

不知道为什么你需要使用strlen

#define NUM_BUFFER_SIZE 5
typedef struct
{
    unsigned char buffer;
    unsigned int index;
} num_buffer_t;

num_buffer_t nums = {
    index: 0
};

void SetNumValue( unsigned char strNum )
{
    switch (strNum)
    {
      case '-':
            if (nums.index > 0)
            {
                nums.buffer = 0;
            }
            break;
      default:
            if (nums.index < NUM_BUFFER_SIZE - 1)
            {
                nums.buffer = strNum;
                nums.buffer = 0;
            }
            break;
    }
}

wangsheng108 发表于 2016-7-5 13:56:55

pathletboy 发表于 2016-7-5 11:29 static/image/common/back.gif
不知道为什么你需要使用strlen

#define NUM_BUFFER_SIZE 5


谢谢高手指点啊
页: [1]
查看完整版本: 我要求助了,被C的类型搞死了