tool.cpp
上传用户:hyb6888
上传日期:2016-01-24
资源大小:5186k
文件大小:3k
源码类别:

输入法编程

开发平台:

Visual C++

  1. // loadmylib.cpp: implementation of the loadmylib class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "tool.h"
  6. #include "stdio.h"
  7. //////////////////////////////////////////////////////////////////////
  8. // Construction/Destruction
  9. //////////////////////////////////////////////////////////////////////
  10. LinkStr:: LinkStr()
  11. {
  12. str[0]=0;
  13. Next=NULL;
  14. }
  15. LinkStr:: ~LinkStr()
  16. {
  17. ;
  18. }
  19. ///////////////////////////////////////////////
  20. //   插入扩展识别码
  21. //   去掉大于4后面的编码后插入
  22. int tool:: InsertStr(char *ss)
  23. {
  24. unsigned char cc;
  25. char temss[200];
  26. LinkStr *p,*np;
  27. strcpy(temss,ss);
  28. cc=temss[0];
  29. temss[4]=0;
  30. p=&linkstrHead[cc];
  31. while(p->Next)
  32. {
  33. if(strcmp(p->Next->str,temss)>=0)
  34. break;
  35. p=p->Next;
  36. }
  37. if(p->Next!=NULL)
  38. {
  39. if(strcmp(temss,p->Next->str)==0)
  40. return -1;
  41. }
  42. np=new LinkStr;
  43. strcpy(np->str,temss);
  44. np->Next=p->Next;
  45. p->Next=np;
  46. NodeNum++;
  47. return 0;
  48. }
  49. tool::tool()
  50. {
  51. int i;
  52. for(i=0;i<256;i++)
  53. linkstrHead[i].Next=NULL;
  54. NodeNum=0;
  55. }
  56. int tool::OutExCode(HANDLE outfp)
  57. {
  58.      LinkStr *p;
  59.  long i,end=0;
  60.  char tem[5];
  61.  DWORD retbyteNum;
  62.  //WriteFile(outfp,&NodeNum,4,&retbyteNum,0);    //输出个数
  63.  for(i=1;i<256;i++)
  64.  {
  65.  p=linkstrHead[i].Next;
  66.  while(p!=NULL)
  67.  {
  68.   sprintf(tem,"%-4s",p->str);
  69.   WriteFile(outfp,tem,5,&retbyteNum,0);    
  70.   p=p->Next;
  71.  }
  72.  }
  73.   return 0;
  74. }
  75. tool::~tool()
  76. {
  77. }
  78. //
  79. long tool::TranChar(char *fileName,long num,char *cc,char *tranCh)
  80. {
  81.  HANDLE  infp; 
  82.  HANDLE  outfp; 
  83.  char buf[5000];
  84.  char nf[1000];
  85.  unsigned long tt=0, i,ret=0,lon=1000;
  86.     sprintf(nf,"%st",fileName);
  87.     infp = CreateFile(fileName, GENERIC_READ,  FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
  88. if(infp==INVALID_HANDLE_VALUE)
  89. {
  90.       MessageBox(0,"TranChar函数装载文件失败","tt.txt文件不存在于当前目录",0);
  91.   return -1;
  92. }
  93.     outfp= CreateFile(nf, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0);
  94. if(infp==INVALID_HANDLE_VALUE)
  95. {
  96.       MessageBox(0,"建立输出文件失败","tt.txtt文件不能建立",0);
  97.   return -1;
  98. }
  99. ReadFile(infp, buf, lon+2,&ret, NULL);
  100. if(ret==lon+2)
  101. {
  102. ret=lon;
  103. while(ret>0)
  104. {
  105. for(i=0;i<ret+2;i++)
  106. {
  107. if(buf[i]<num && buf[i+2]==cc[0])
  108. buf[i+2]=tranCh[0];
  109. }
  110. WriteFile(outfp, buf, ret, &ret, NULL);
  111. buf[0]=buf[ret];
  112. buf[1]=buf[ret+1];
  113. ReadFile(infp, &buf[2], lon, &ret, NULL);
  114. }
  115. WriteFile(outfp, buf, 2, &ret, NULL);
  116. }
  117. else
  118. {
  119. for(i=0;i<ret-2;i++)
  120. {
  121. if(buf[i]<num && buf[i+2]==cc[0])
  122. buf[i+2]=tranCh[0];
  123. }
  124. WriteFile(outfp, buf, ret, &ret, NULL);
  125. }
  126.     CloseHandle( infp);
  127.     CloseHandle( outfp);
  128.     MessageBox(0,"Over","转换结束",0);
  129. return 0;
  130. }