⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2sfb2.c

📁 t9拼音输入
💻 C
📖 第 1 页 / 共 4 页
字号:
                                        {"huan",PY_mb_shuan},   
                                        {"huang",PY_mb_shuang},   
                                        {"hui",PY_mb_shui},   
                                        {"hun",PY_mb_shun},   
                                        {"huo",PY_mb_shuo},   
                                        {"i",PY_mb_si},   
                                        {"ong",PY_mb_song},   
                                        {"ou",PY_mb_sou},   
                                        {"u",PY_mb_su},   
                                        {"uan",PY_mb_suan},   
                                        {"ui",PY_mb_sui},   
                                        {"un",PY_mb_sun},   
                                        {"uo",PY_mb_suo}};   
code struct PY_index code PY_index_t[]={{"a",PY_mb_ta},   
                                        {"ai",PY_mb_tai},   
                                        {"an",PY_mb_tan},   
                                        {"ang",PY_mb_tang},   
                                        {"ao",PY_mb_tao},   
                                        {"e",PY_mb_te},   
                                        {"eng",PY_mb_teng},   
                                        {"i",PY_mb_ti},   
                                        {"ian",PY_mb_tian},   
                                        {"iao",PY_mb_tiao},   
                                        {"ie",PY_mb_tie},   
                                        {"ing",PY_mb_ting},   
                                        {"ong",PY_mb_tong},   
                                        {"ou",PY_mb_tou},   
                                        {"u",PY_mb_tu},   
                                        {"uan",PY_mb_tuan},   
                                        {"ui",PY_mb_tui},   
                                        {"un",PY_mb_tun},   
                                        {"uo",PY_mb_tuo}};   
code struct PY_index code PY_index_u[]={{"",PY_mb_space}};   
code struct PY_index code PY_index_v[]={{"",PY_mb_space}};   
code struct PY_index code PY_index_w[]={{"a",PY_mb_wa},   
                                        {"ai",PY_mb_wai},   
                                        {"an",PY_mb_wan},   
                                        {"ang",PY_mb_wang},   
                                        {"ei",PY_mb_wei},   
                                        {"en",PY_mb_wen},   
                                        {"eng",PY_mb_weng},   
                                        {"o",PY_mb_wo},   
                                        {"u",PY_mb_wu}};   
code struct PY_index code PY_index_x[]={{"i",PY_mb_xi},   
                                        {"ia",PY_mb_xia},   
                                        {"ian",PY_mb_xiao},   
                                        {"iang",PY_mb_xiang},   
                                        {"iao",PY_mb_xiao},   
                                        {"ie",PY_mb_xie},   
                                        {"in",PY_mb_xin},   
                                        {"ing",PY_mb_xing},   
                                        {"iong",PY_mb_xiong},   
                                        {"iu",PY_mb_xiu},   
                                        {"u",PY_mb_xu},   
                                        {"uan",PY_mb_xuan},   
                                        {"ue",PY_mb_xue},   
                                        {"un",PY_mb_xun}};   
code struct PY_index code PY_index_y[]={{"a",PY_mb_ya},   
                                        {"an",PY_mb_yan},   
                                        {"ang",PY_mb_yang},   
                                        {"ao",PY_mb_yao},   
                                        {"e",PY_mb_ye},   
                                        {"i",PY_mb_yi},   
                                        {"in",PY_mb_yin},   
                                        {"ing",PY_mb_ying},   
                                        {"o",PY_mb_yo},   
                                        {"ong",PY_mb_yong},   
                                        {"ou",PY_mb_you},   
                                        {"u",PY_mb_yu},   
                                        {"uan",PY_mb_yuan},   
                                        {"ue",PY_mb_yue},   
                                        {"un",PY_mb_yun}};   
code struct PY_index code PY_index_z[]={{"a",PY_mb_za},   
                                        {"ai",PY_mb_zai},   
                                        {"an",PY_mb_zan},   
                                        {"ang",PY_mb_zang},   
                                        {"ao",PY_mb_zao},   
                                        {"e",PY_mb_ze},   
                                        {"ei",PY_mb_zei},   
                                        {"en",PY_mb_zen},   
                                        {"eng",PY_mb_zeng},   
                                        {"ha",PY_mb_zha},   
                                        {"hai",PY_mb_zhai},   
                                        {"han",PY_mb_zhan},   
                                        {"hang",PY_mb_zhang},   
                                        {"hao",PY_mb_zhao},   
                                        {"he",PY_mb_zhe},   
                                        {"hen",PY_mb_zhen},   
                                        {"heng",PY_mb_zheng},   
                                        {"hi",PY_mb_zhi},   
                                        {"hong",PY_mb_zhong},   
                                        {"hou",PY_mb_zhou},   
                                        {"hu",PY_mb_zhu},   
                                        {"hua",PY_mb_zhua},   
                                        {"huai",PY_mb_zhuai},   
                                        {"huan",PY_mb_zhuan},   
                                        {"huang",PY_mb_zhuang},   
                                        {"hui",PY_mb_zhui},   
                                        {"hun",PY_mb_zhun},   
                                        {"huo",PY_mb_zhuo},   
                                        {"i",PY_mb_zi},   
                                        {"ong",PY_mb_zong},   
                                        {"ou",PY_mb_zou},   
                                        {"u",PY_mb_zu},   
                                        {"uan",PY_mb_zuan},   
                                        {"ui",PY_mb_zui},   
                                        {"un",PY_mb_zun},   
                                        {"uo",PY_mb_zuo}};   
code struct PY_index code PY_index_end[]={"",PY_mb_space};   
   
/*定义首字母索引表*/   
code struct PY_index code *PY_index_headletter[]={  PY_index_a,   
                                                    PY_index_b,   
                                                    PY_index_c,   
                                                    PY_index_d,   
                                                    PY_index_e,   
                                                    PY_index_f,   
                                                    PY_index_g,   
                                                    PY_index_h,   
                                                    PY_index_i,   
                                                    PY_index_j,   
                                                    PY_index_k,   
                                                    PY_index_l,   
                                                    PY_index_m,   
                                                    PY_index_n,   
                                                    PY_index_o,   
                                                    PY_index_p,   
                                                    PY_index_q,   
                                                    PY_index_r,   
                                                    PY_index_s,   
                                                    PY_index_t,   
                                                    PY_index_u,   
                                                    PY_index_v,   
                                                    PY_index_w,   
                                                    PY_index_x,   
                                                    PY_index_y,   
                                                    PY_index_z,   
                                                    PY_index_end};     
   
//---------------------------------------------------------------------------------------    
void T9Reset()   
{   //开始拼写一个汉字之前必须先调用    
    BYTE i;   
    for (i=0;i<8;i++)   
    {   
        PYBuf[i][0]=0;   
    }   
}   
   
//---------------------------------------------------------------------------------------    
BYTE * GetChnStr(BYTE * strInput_py_str,BYTE * PYCount)   
{   //返回值:指向第一个符合拼音的PY_index结构体    
    //PYCount:通过这个值来指示共有几个PY_index符合要求    
    struct PY_index *cpHZ,*cpHZedge,*pHZ=NULL;   
    char i,cInputStrLength;   
   
    cInputStrLength=strlen(strInput_py_str);    /*输入拼音串长度*/   
    if(*strInput_py_str=='\0')return NULL;       /*如果输入空字符返回0*/   
   
    for(i=0;i<cInputStrLength;i++) { cpHZ- return (PYCount="=NULL)" if (*(strInput_py_str+i)="=0)" for(i="0;i<cInputStrLength;i++)" *索引表不超界* while(cpHZ<cpHZedge) *指向拼音串第二个字母* strInput_py_str++; *设置指针界限* cpHZedge="PY_index_headletter[strInput_py_str[0]-'a'+1];" *查首字母索引* cpHZ="PY_index_headletter[strInput_py_str[0]-'a'];" NULL; if(*strInput_py_str="='i')return" *错误拼音输入* *将字母串转为小写* *(strInput_py_str+i)|="0x20;">PY_mb;   
                if (pHZ==NULL)   
                    pHZ=cpHZ;   
                (*PYCount)++;   
            }   
            if (*(strInput_py_str+i)!=*((*cpHZ).PY+i))    
                break;    /*发现字母串不配,退出*/   
        }   
        cpHZ++;   
    }   
    return  pHZ;                         
}   
   
//---------------------------------------------------------------------------------------    
BYTE * GetKey(BYTE Key)   
{   //输入:0~7    
    //返回:指向xdata BYTE PYBuf[8][8];的二维数组    
    //KeyPY结构:每行第一个Byte代表这行内有几个字母,0代表没有    
    BYTE i,j=0;   
    BYTE code * pPY;   
       
    for (i=0;i<8;i++)   
    {   
        if (PYBuf[i][0]!=0)   
        {   
            pPY=KeyPY[Key];   
            while(*pPY!=0)   
            {   
                PYBuf[i][PYBuf[i][0]+1]=*pPY;   
                PYBuf[i][PYBuf[i][0]+2]=0;   
                if (GetChnStr(PYBuf[i]+1,NULL))   
                {   
                    PYBuf[i][0]++;   
                    break;   
                }   
                pPY++;     
            }   
            if (*pPY==0)   
                PYBuf[i][0]=0;   
               
        }   
        else j++;   
    }   
    if (j==8)   //第一次按键    
    {   
        for (i=0,j=0;KeyPY[Key][i]!=0;i++)   
        {   
            if (KeyPY[Key][i]=='i' || KeyPY[Key][i]=='u' || KeyPY[Key][i]=='v')    
                continue;   
            else   
            {   
                PYBuf[j][0]=1;   
                PYBuf[j][1]=KeyPY[Key][i];   
                j++;   
            }   
        }   
    }   
    return PYBuf;   
}  

/********************T9拼音输入法模块******************* 
/          利用前辈老大的普通输入法实现了T9输入 
/				普通输入法	原作:张 凯 
/               普通输入法  改写:李 强(mail2li@21cn.com) 
/				T9输入法    原作:王峥嵘	(w00d@sina.com) 
/                      编译环境:Keil C 7.01 
/使用例:需要通过按两次键盘'\0','\0'来获得 "把吧八巴...." 
/....... 
BYTE Key='\0',i,j,count; 
struct PY_index pPY; 
BYTE * p,pmb; 
T9Reset(Key); 
GetKey(Key); 
p=GetKey(Key); 
for (i=0;i<8;i++) 
{ 
	if ((*(p+8*i))>0) 
	{ 
		pPY=GetChnStr(p+8*i+1,&count); 
		for (j=0;jPY_mb;//获得每一行码表 
			pPY++; 
		} 
	} 
} 
/


 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -