#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/*
说明 字库文件放在C,D盘根目录下 fopen函数中的目录要改变
szHZK32这个变量在HKZ32.CPP文件中定义, 本次运行环境是dev c++ 5.3环境通过
*/
extern unsigned char szHZK32[];
void Disp_HZK16(vooid)
{
FILE *fp;
char qh,wh;
unsigned long offset;
int array[16][16];
char mat[16][2];
char inclode[2] = {"涛"}; // 要读出的字符
int i,j,k;
char a = 0;
qh = inclode[0] - 0xa0; //区号
wh = inclode[1] - 0xa0; //位号
offset = (94*(qh - 1) +(wh - 1))*32;
printf("输出的16位汉字,区号,位号\n");
putchar(inclode[0]);
putchar(inclode[1]);
putchar(',');
printf("%d,%d\n",qh,wh);
if((fp = fopen("c:\\HZK16","rb")) == NULL)
{
printf("\ncan not open file strike any key exit");
getch();
exit(1);
}
fseek(fp,offset,SEEK_SET);
fread(mat,32,1,fp);
fclose(fp);
for(i=0; i<16; i++)
{
for(j=0; j<2; j++)
{
for(k=0; k<8; k++)
{
if(mat[i][j] & (0x80>>k))array[i][a+k] = '+';
else array[i][a+k] = ' ';
}
a += 8;
}
a = 0;
}
for(i=0; i<16; i++)
{
for(j=0; j<16; j++)
{
printf("%c",array[i][j]);
}
printf("\n");
}
printf("\n");
}
void Disp_HZK24(vooid)
{
FILE *fp;
char qh,wh;
unsigned long offset;
int array[24][24];
char mat[24][3];
char inclode[2] = {"⑶"}; // 要读出的字符
int i,j,k;
char a = 0;
qh = inclode[0] - 0xa0; //区号
wh = inclode[1] - 0xa0; //位号
offset = (94*(qh - 1) +(wh - 1))*72;
printf("输出的24位汉字,区号,位号\n");
putchar(inclode[0]);
putchar(inclode[1]);
putchar(',');
printf("%d,%d\n",qh,wh);
if((fp = fopen("d:\\HZK24","rb")) == NULL)
{
printf("\ncan not open file strike any key exit");
getch();
exit(1);
}
fseek(fp,offset,SEEK_SET);
fread(mat,72,1,fp);
fclose(fp);
for(i=0; i<24; i++)
{
for(j=0; j<3; j++)
{
for(k=0; k<8; k++)
{
if(mat[i][j] & (0x80>>k))array[i][a+k] = '+';
else array[i][a+k] = ' ';
}
a += 8;
}
a = 0;
}
for(i=0; i<24; i++)
{
for(j=0; j<24; j++)
{
printf("%c",array[i][j]);
}
printf("\n");
}
printf("\n");
}
void Disp_HZK32(void)
{
FILE *fp;
char qh,wh;
unsigned long offset;
int array[32][32];
char mat[32][4];
char inclode[2] = {"啊"}; // 要读出的字符
int i,j,k;
char a = 0;
//inclode[0] = 0xa1;
//inclode[1] = 0xa2;
qh = inclode[0] - 0xa0; //区号
wh = inclode[1] - 0xa0; //位号
offset = (94*(qh - 1) +(wh - 1))*128;
printf("输出的32位汉字,区号,位号\n");
putchar(inclode[0]);
putchar(inclode[1]);
putchar(',');
printf("%d,%d\n",qh,wh);
if((fp = fopen("c:\\HZK32","rb")) == NULL)
{
printf("\ncan not open file strike any key exit");
getch();
exit(1);
}
fseek(fp,offset,SEEK_SET);
fread(mat,128,1,fp);
fclose(fp);
for(i=0; i<32; i++)
{
for(j=0; j<4; j++)
{
for(k=0; k<8; k++)
{
if(mat[i][j] & (0x80>>k))array[i][a+k] = '+';
else array[i][a+k] = ' ';
}
a += 8;
}
a = 0;
}
for(i=0; i<32; i++)
{
for(j=0; j<32; j++)
{
printf("%c",array[i][j]);
}
printf("\n");
}
printf("\n");
}
void Disp_HZK32CPP(void)
{
FILE *fp;
char qh,wh;
unsigned long offset;
int array[32][32];
char mat[32][4];
char inclode[2] = {"が"}; // 要读出的字符
int i,j,k;
char a = 0;
char ch;
qh = inclode[0] - 0xa0; //区号
wh = inclode[1] - 0xa0; //位号
offset = (94*(qh - 1) +(wh - 1))*128;
printf("输出的32位汉字,区号,位号\n");
putchar(inclode[0]);
putchar(inclode[1]);
putchar(',');
printf("%d,%d\n",qh,wh);
for(i=0; i<32; i++)
{
for(j=0; j<4; j++)
{
mat[i][j] = szHZK32[offset++]; //变量是HZK提取出来的数组
}
}
for(i=0; i<32; i++)
{
for(j=0; j<4; j++)
{
for(k=0; k<8; k++)
{
if(mat[i][j] & (0x80>>k))array[i][a+k] = '+';
else array[i][a+k] = ' ';
}
a += 8;
}
a = 0;
}
for(i=0; i<32; i++)
{
for(j=0; j<32; j++)
{
printf("%c",array[i][j]);
}
printf("\n");
}
printf("\n");
}
int main(int argc, char *argv[])
{
//Disp_HZK16();
Disp_HZK24();
//Disp_HZK32();
//Disp_HZK32CPP();
//printf("hello world");
return 0;
}
- 1
- 2
前往页