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

📄 z16.cpp.bak

📁 提取单个汉字字模程序
💻 BAK
字号:
/************************************* 
提取单个汉字字模程序  16 dots 

修改函数writehz()可以按自己的文件格式生成字库代码文件

作 者: David Wang
Email:  wy94081@sina.com.cn
**************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <graphics.h>
#include <conio.h>
#include <dos.h>

void writehz( char *str,char *filename);

void main(void)
{
   int len,i;
   char *str="样间隔秒请联机加载按键无法结束是否";
   char *s;
   s=str;
   len=strlen(s)/2;
   for(i=0;i<len;i++)
    {
	 writehz(s,"my16.c");
	 s+=2;
	}
   }


void writehz(char *str,char *filename)
{
  FILE *fp1,*fp2;
  unsigned char buf[16][2];
  unsigned char data1,data2;
  char s[2]={0,0};
  unsigned short int data;
  long offset;
  unsigned short int qu,wei,i,j,code;

  fp1=fopen("hzk16","rb");
  if(fp1==NULL) {
      printf("Can't open hzk16!!\n");
      exit(0);
      }

  qu=(*str-0xa1)&0x7f; /* 区号:高字节 */
  wei=(*(str+1)-0xa1)&0x7f; /* 位号:低字节 */
  //code=(*str-0xa0)*100+(*(str+1)-0xa0);
  code=(qu+1)*100+(wei+1);

  offset=(long)(qu*94+wei)*32;
  fseek(fp1,offset,SEEK_SET);
  for(i=0;i<16;i++)
    {
	for(j=0;j<2;j++)
	{
	  buf[i][j]=fgetc(fp1);
	  }
     }

   fp2=fopen(filename,"a+");
   if(fp2==NULL) {
      printf("Can't create output file!!!\n");
      exit(0);
      }

   fprintf(fp2,"{%d, ",code);
   for(i=0;i<16;i++)
     {
      data1=buf[i][0]&0x00ff;
      data2=buf[i][1]&0x00ff;
      if(i<15) 
       {
         if(data1<0x10&&data2<0x10)
             fprintf(fp2,"0x0%X, 0x0%X, ",data1,data2); 
            else 
              if(data1>0x0f&&data2<0x10)
               	 fprintf(fp2,"0x%2X, 0x0%X, ",data1,data2);
               	 else
               	   if(data2>0x0f&&data1<0x10)
               	      fprintf(fp2,"0x0%X, 0x%2X, ",data1,data2);
               	      else
               	        fprintf(fp2,"0x%2X, 0x%2X, ",data1,data2);
           }    	        
	  else 
	   {
	   if(data1<0x10&&data2<0x10)
             fprintf(fp2,"0x0%X, 0x0%X",data1,data2); 
            else 
              if(data1>0x0f&&data2<0x10)
               	 fprintf(fp2,"0x%2X, 0x0%X",data1,data2);
               	 else
               	   if(data2>0x0f&&data1<0x10)
               	      fprintf(fp2,"0x0%X, 0x%2X",data1,data2);
               	      else
               	        fprintf(fp2,"0x%2X, 0x%2X",data1,data2);
              }
      }
   strncat(s,str,2);
   fprintf(fp2,"}, /* %s */ \n",s);
   fclose(fp2);
 }

⌨️ 快捷键说明

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