基于GTK的拼音输入法Word下载.docx

上传人:b****5 文档编号:19833139 上传时间:2023-01-10 格式:DOCX 页数:39 大小:36.41KB
下载 相关 举报
基于GTK的拼音输入法Word下载.docx_第1页
第1页 / 共39页
基于GTK的拼音输入法Word下载.docx_第2页
第2页 / 共39页
基于GTK的拼音输入法Word下载.docx_第3页
第3页 / 共39页
基于GTK的拼音输入法Word下载.docx_第4页
第4页 / 共39页
基于GTK的拼音输入法Word下载.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

基于GTK的拼音输入法Word下载.docx

《基于GTK的拼音输入法Word下载.docx》由会员分享,可在线阅读,更多相关《基于GTK的拼音输入法Word下载.docx(39页珍藏版)》请在冰豆网上搜索。

基于GTK的拼音输入法Word下载.docx

//label显示用的变量

charlabel_swap[30];

charentry_buffer[100];

GtkWidget*entry_all;

GtkWidget*label_py,*label_cn,*label_yx;

structchinese_container

{

charlabel[2];

charpy[8];

charch[3];

}s;

structChinese_data

chardata[4];

//存放的一个字

intFrequency;

//使用的频度

structChinese_data*next;

//指向下一个字

//structChinese_data*pre;

//指向前一个字

structword

chardata[20];

structword*next;

structElement

charElementType;

//元素的类型

structChinese_data*ch;

//存放数据(汉子)

structElement*Father;

//父指针

intOld_new;

//是新的还是旧的词

intIsword;

//判断是字还是词

structElement*letter[26];

//孩子指针

structword*ci;

//词的指针

structElement*pointer=NULL;

structElement*p_element=NULL;

structElement*father=NULL;

structChinese_data*pointer_ch=NULL;

structChinese_data*pu=NULL;

structword*pointer_ci,*pi;

/*******************************************************************

函数名:

creat_node_data;

输入参数:

void;

输出:

void;

功能:

开辟汉字的存储空间;

********************************************************************/

structChinese_data*creat_node_data(void)

structChinese_data*c;

c=(structChinese_data*)malloc(sizeof(structChinese_data));

returnc;

}

creat_node_word;

开辟词的存储空间,

structword*creat_node_word(void)

structword*c;

c=(structword*)malloc(sizeof(structword));

creat_node;

开辟链表的存储空间,

structElement*creat_node(void)

structElement*b;

b=(structElement*)malloc(sizeof(structElement));

returnb;

bl;

structElement*head;

对输入的链表进行遍历输出,按照汉子表的形式输出,

voidbl(structElement*head) 

//等深度遍历函数

inti,j,k;

structChinese_data*ph;

structElement*pe;

structword*pi;

charpiny[8],piy[8];

charci_piny[20],ci_piy[20];

piny[0]='

\0'

;

piy[0]='

for(i=0;

i<

26;

i++)

if(head->

letter[i])

{

head=head->

letter[i];

ch!

=NULL) 

//可以在底下一级插入排序函数即为遍历排序或者插入释放类存的语句!

ph=head->

ch;

pe=head;

j=0;

while(pe->

ElementType) 

//得到的倒序拼音

sprintf(&

piny[j],"

%c"

pe->

ElementType);

pe=pe->

Father;

j++;

}

for(k=0;

k<

j;

k++) 

//再倒序排列 

//

piy[k]=piny[j-k-1];

//

while(j<

8) 

piy[j]='

\40'

//这部分取得拼音,且补上空格!

for(k=0;

k++)

if(piy[0]==T[k])

printf("

%c"

TT[k]);

//打印出大写字母标志

%s"

piy);

 

//打印出拼音

pe=NULL;

while(ph!

=NULL)

ph->

data);

//打印拼音之后的字

ph=ph->

next;

\n"

);

//打印换行符号,即拼音后面的汉子结束了。

ph=NULL;

//清空指针

ci!

ci_piny[j],"

//再倒序排列

ci_piy[k]=ci_piny[j-k-1];

ci_piy[j]='

//printf("

%s\n"

ci_piy);

if(ci_piy[0]==T[k])

//打印出大写字母标志

T[2]);

pi=head->

ci;

while(pi!

pi->

pi=pi->

pi=NULL;

bl(head);

order;

structElement*Head;

对输入的链表结构里面有词的节点按照使用频度值进行排序,排序完毕后,将排序完的

表头赋值给输入的指针;

voidorder(structElement*Head)/*排序函数*/

structwordsh;

structword*head;

sh.next=Head->

head=&

sh;

structword*temp=NULL;

//默认为NULL,也就是链表的结尾

structword*ptr1=head;

structword*ptr2=head->

while(ptr1->

next!

=temp)//(ptr1!

=NULL)

while(ptr2->

=temp)//(ptr2!

{

if(ptr1->

next->

Frequency<

ptr2->

Frequency)//(ptr1->

score>

score)

{//交换ptr1->

link和ptr2->

link

ptr1->

next=ptr2->

//temp->

link=ptr2;

next=ptr2;

//ptr2->

link=ptr1;

}

ptr1=ptr1->

//ptr2=ptr2->

link;

ptr2=ptr1->

//从上面移动下来的

temp=ptr2;

//新加的

ptr1=head;

//ptr1=ptr1->

head=head->

Head->

ci=head;

sort;

对输入的链表结构里面有字的节点按照使用频度值进行排序,排序完毕后,将排序完的

voidsort(structElement*Head)/*排序函数*/

structChinese_datash;

structChinese_data*head;

structChinese_data*temp=NULL;

structChinese_data*ptr1=head;

structChinese_data*ptr2=head->

ch=head;

blpx;

用字,词的排序函数来实现整个链表的频度排序;

voidblpx(structElement*head) 

//遍历排序总体的

structChinese_data*p_ch;

//structElement*pe;

//blpx(head);

sort(head);

//对这一级的汉子排序

Isword)

order(head);

blpx(head);

blw;

对输入的链表进行回写,将链表节点的字,词写入文件中;

voidblw(structElement*head) 

FILE*w_file;

charc_piny[20],c_piy[20];

char*space="

"

char*enter="

//blw(head);

//strncpy(&

piny[j],&

(pe->

ElementType),1);

//printf("

//大写字母

w_file=fopen("

dx"

"

a+b"

fwrite(&

TT[k],sizeof(char),1,w_file);

//写大写字母标记位置!

fwrite(space,sizeof(char),1,w_file);

//大写字母+空格

fclose(w_file);

fwrite(piy,sizeof(char),8,w_file);

//写入拼音

while(ph)

//拼音之后的字

fwrite(ph->

data,sizeof(char),3,w_file);

fwrite(enter,sizeof(char),strlen(enter),w_file);

//写换行

c_piny[j],"

c_piy[k]=c_piny[j-k-1];

/* 

20) 

c_piy[j]='

//这部分取得拼音,且补上空格

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1