正文

手机拼音输入法头文件和主函数2006-10-21 20:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/goal00001111/19586.html

分享到:

//*  Name: 手机拼音输入系统头文件   Copyright:   Author:   Date: 20-10-06 07:23  Description:手机拼音输入系统头文件 */ #define SIZE 500 struct Node{ char data[10]; struct Node *next;};typedef struct Node SPELL;typedef SPELL *LNode; char *storage[SIZE]; ///////////////////////////////////////////////////////////////////////////////////*函数声明:void ReadFile(const char fileName[]);函数功能:从指定的文件中把所有汉语拼音及对应汉字读入一个指针数组*storage[](全局变量),  数组的每个元素指向文件中的一行。输入变量: const char fileName[],指定的文件名,其中存储了汉字库 输出变量:*storage[],全局变量,每个元素指向一个包含某拼音组合及其对应汉字的字符串返回值: 无  */void ReadFile(const char fileName[]);////////////////////////////////////////////////////////////////////////////////*函数声明:void ReadValue(char value[]);函数功能:读取用户输入的字符串buf,并对其进行适当的转换。     转换规则:先找到结束键'1',删除结束键之后的字符。    若无结束键'1',value[i] = '\0';;并结束程序;     然后在buf中逆序查找#号,直到找到#号或遇到buf的第一个元素为止。    若找到#号,则把#号之后的合法字符(数字)复制到value;    若未找到#号,则把buf的所有合法字符(数字)复制到value;    若只输入结束键'1',表示用户选择离开。 输入变量: char value[],用来存储用户输入的合法字符的字符串 输出变量: char value[],用来存储用户输入的合法字符的字符串 返回值: 无  */void ReadValue(char value[]);///////////////////////////////////////////////////////////////////////////////*函数声明:LNode GetLetterList(const char value[]);  函数功能:首先创建一个指针数组用来存储键盘上的数字字母组合,以该数字为下标,即const char *keyboard[10] = {NULL, NULL,"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; 创建一个空的线性链表LNode letterList。然后调用函数RecursionAnalyse,采用递归的方法,求出数字字符串对应的所有拼音组合,并把它们添加到链表letterList。输入变量: const char value[],用来存储用户输入的合法字符的字符串 输出变量: 无 返回值: LNode letterList,由拼音组合所组成的链表,它的空间在程序执行过程中动态分配 */LNode GetLetterList(const char value[]); ////////////////////////////////////////////////////////////////////////////////////*  Name: void OutPutSpell(char letters[],const char value[])  Copyright:   Author:   Date: 21-10-06 14:38  Description: 函数声明:void OutPutSpell(char letters[],const char value[]); 函数功能:根据整理后得到的字符串value,找出对应的所有拼音组合,创建一个线性链表letterList。把所有满足条件的拼音组合添加到letterList。把存储在letterList中的拼音组合按顺序显示到屏幕,请用户选取一个组合,并把用户选择的拼音存储到letters。 然后销毁线性链表。 输入变量:char letters[],用来存储用户选择的拼音组合   const char value[],用来存储用户输入的合法字符的字符串  输出变量:char letters[],用来存储用户选择的拼音组合返回值: 无*/void OutPutSpell(char letters[], const char value[]);//////////////////////////////////////////////////////////////////////////////////*函数声明:void DistroyList(LNode List); 函数功能:销毁链表letterList。 输入变量:LNode *List,指向线性链表letterList的指针 输出变量:无返回值: 无*/void DistroyList(LNode *List);////////////////////////////////////////////////////////////////////////////////////*函数声明:void OutPutCharacters(const char letters[], char character[]); 函数功能:到*storage[]中找到与letters匹配的元素,将相应的汉字按顺序输出到屏幕,  请用户选取一个汉字,  若用户输入#号或非法字符,存储NULL到character;   若用户输入*号,则继续输出后面的汉字,直到全部输出,然后存储NULL到character;   若用户输入了有效的选择,存储所选择的汉字到character。 输入变量:const char letters[],用来存储用户选择的拼音组合   char character[],用来存储用户选择的汉字  输出变量:char character[],用来存储用户选择的汉字  返回值: 无*/void OutPutCharacters(const char letters[], char character[]); /////////////////////////////////////////////////////////////////////////////*函数声明:void PrintCharacter(const char character[], const char fileName[]); 函数功能:显示用户选取的汉字到屏幕,同时按照追加的方式输出到指定文件 。输入变量:const char character[],用来存储用户选择的汉字  const char fileName[],指定的文件名,用来追加存储用户选择的汉字 输出变量:char character[],用来存储用户选择的汉字  返回值: 无*/void PrintCharacter(const char character[], const char fileName[]); /////////////////////////////////////////////////////////////////////////////*  Name: void Introduce(void)  Copyright:   Author:   Date: 19-10-06 20:27  Description: 函数声明:void Introduce(void); 函数功能: 介绍文档 输入变量:无输出变量:无返回值: 无*/void Introduce(void);////////////////////////////////////////////////////////////////////////////////*  Name: void Presentation(void)  Copyright:   Author:   Date: 19-10-06 20:27  Description: 函数声明:void Introduce(void); 函数功能: 帮助文档 ,告诉用户如何使用此输入法 输入变量:无输出变量:无返回值: 无*/void Presentation(void);//////////////////////////////////////////////////////////////////////////////*  Name: void ShowScreen(void)  Copyright:   Author:   Date: 19-10-06 20:27  Description: 函数声明:void Introduce(void); 函数功能: 显示手机屏幕 输入变量:无输出变量:无返回值: 无*/void ShowScreen(void);/////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// /*  Name: 手机拼音输入法   Copyright: free  Author: goal  Date: 21-10-06 19:44  Description: 版本号1.10*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "SPELL.h" extern char *storage[SIZE]; int main(int argc, char *argv[]){ char inFile[] = "汉字库.txt"; char outFile[] = "输出文件.txt"; char value[81]; char letters[10]; char character[3];  ReadFile(inFile); //读取汉字库    //Introduce(); Presentation(); //告诉用户如何使用此输入法  while (1) //死循环,直到用户选择退出  {  ShowScreen(); // 显示手机屏幕     ReadValue(value); //用户输入数据     if (strcmp(value, "QUIT") == 0) //用户选择退出   break;    if (value[0] == '\0') //输入无效数据,重新输入数据   {   puts("错误:无效数据! 重新输入数据 ");   continue;  }     OutPutSpell(letters, value); //显示拼音列表,供用户选择    if (letters[0] == '\0')  //无效选择,重新输入数据     continue;     OutPutCharacters(letters, character); //显示汉字列表,供用户选择    if (character[0] == '\0') //无效选择,重新输入数据    continue;     PrintCharacter(character, outFile);  //显示汉字,并输出到文件  }     system("PAUSE");    return 0;}    

阅读(5824) | 评论(15)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册