关于T9输入法显示几个字体问题

2019-07-20 23:03发布

本帖最后由 蛋蛋的忧伤3333 于 2019-7-7 20:36 编辑

u8 get_matched_pymb(u8 *strin,py_index **matchlist)
{
        py_index *bestmatch;//最佳匹配
        u16 pyindex_len;
        u16 i;
        u8 temp,mcnt=0,bmcnt=0;
        bestmatch=(py_index*)&py_index3[0];//默认为a的匹配
        pyindex_len=sizeof(py_index3)/sizeof(py_index3[0]);//得到py索引表的大小.
        for(i=0;i<pyindex_len;i++)
        {
                temp=str_match(strin,(u8*)py_index3.py_input);
                if(temp)
                {
                        if(temp==0XFF)matchlist[mcnt++]=(py_index*)&py_index3;
                        else if(temp>bmcnt)//找最佳匹配
                        {
                                bmcnt=temp;
                            bestmatch=(py_index*)&py_index3;//最好的匹配.
                        }
                }
        }
        if(mcnt==0&&bmcnt)//没有完全匹配的结果,但是有部分匹配的结果
        {
                matchlist[0]=bestmatch;
                mcnt=bmcnt|0X80;                //返回部分匹配的有效位数
        }
        return mcnt;//返回匹配的个数
}
输入一个a我的理解是把匹配到的首个字母码表的地址放到了matchlist[1]里,但是为什么t9.pymb[index-1]->pymb这句吧符合a的文字都能显示出来啊。。。看不懂下面这三个到底怎么完成的了,有没有好心人解答下
typedef struct
{
  u8 *py_input;//输入的字符串
  u8 *py;           //对应的拼音
  u8 *pymb;           //码表
}py_index;

#define MAX_MATCH_PYMB         10        //最大匹配数

//拼音输入法
typedef struct
{
  u8(*getpymb)(u8 *instr);                        //字符串到码表获取函数
  py_index *pymb[MAX_MATCH_PYMB];        //码表存放位置
}pyinput;

pyinput t9=
{
        get_pymb,
    0,
};


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。