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

📄 hzkout.c

📁 自己以前写的 引导扇区代码。包括: fat12.asm fat16.asm fat32.asm
💻 C
字号:
/*--------------------------------------------*/
#include "stdio.h" 
/*--------------------------------------------*/


int fend=0;
char ch[256],ch2[256];
char *err_txt="错误: 不能打开文本输入文件";
char *err_hzk="错误: 不能打开汉字库文件";
char *err_out="错误:不能打开小字库输出文件";
char *helpmsg="将一个文本文件中的汉字信息从字库中读出并存放到小字库中\n命令格式:\n\n";
char *helpmsg2="  HZKOUT [textfile] [outfile] [hzkfile]\n\n";
char *helpmsg3="\ttextfile\t文本文件,你需要转换为小字库的汉字内容。\n\
\thzkfile \t汉字库文件,如:hzk16、hzk16f等等。\n\toutfile \t即将输出的汉字库文件。\n\thelp    \t";
char *helpme="你可以使用 HZKOUT /? 或 HZKOUT /h 来获取帮助。\n";
char *helpmsg4="\n如果你不带任何参数,将执行命令:\n\n\thzkout intxt.txt hzk16.inc hzk16\n";
char hzst[10];


void main(int argc,char *argv[])
{
int  i=0, j=0, n=0, k;
//char *str;
unsigned char bitdata[32];
long fpos;
unsigned vpos;
unsigned char s0;
FILE *hzf_p,*hzk_o,*intxt;
char *nortxt="intxt.txt";
char *norhzk="\\fansdev\\hzk\\hzk16";
char *norout="hzk16.inc";
//str=ch;
while(j<argc)
	{
	if(strcmp("/h",argv[j])==0||strcmp("/H",argv[j])==0||strcmp("/?",argv[j])==0)
		{printf("%s %s %s %s %s",helpmsg,helpmsg2,helpmsg3,helpme,helpmsg4);
		return;
		}

	j++;
	}
if(argc>1)
	{
	if((intxt = fopen(argv[1], "rb")) == NULL)
		{
		printf("%s %s\n%s",err_txt,argv[2],helpme);
		return;
		}
	}
else if((intxt = fopen(nortxt, "rb")) == NULL)
		{
		printf("%s %s\n%s",err_txt,nortxt,helpme);
		return;
		}
	else
		{
		while(i<2048)
			{
			s0=fgetc(intxt);
			if((ch[i]=s0)==EOF)
				{
				ch[i]='\0';
				break;
				}
			i++;
			}
		fclose(intxt);
		s0=0x81;
		}


if(argc>3)
	{if((hzf_p = fopen(argv[3], "rb")) == NULL)
		{
		printf("%s %s\n%s",err_hzk,argv[3],helpme);
		return;
		}
	}
else	{if((hzf_p = fopen(norhzk, "rb")) == NULL)
		{
		printf("%s %s\n%s",err_hzk,norhzk,helpme);
		return;
		}
	}

if(argc>2)
	{if((hzk_o = fopen(argv[3], "wb")) == NULL)
		{
		printf("%s %s\n%s",err_out,argv[2],helpme);
		return;
		}
	}
else
	{if((hzk_o = fopen(norout, "wb")) == NULL)
		{
		printf("%s %s\n%s",err_out,norout,helpme);
		return;
		}
	}
fprintf(hzk_o,"hzkdot \xd\xa");
for(i = 0; i < strlen(ch); ++i)
	{
	if((ch[i] & 0x80) == 0)
		{ch2[i]=ch[i];
		n++;
		}
	else
		{n+=2;
		ch2[i]=s0;
		s0++;
		ch2[i+1]=s0;
		s0++;
		fpos = 32L*(((unsigned char)ch[i] - 161) * 94 + ((unsigned char)ch[i+1] - 161));
		fseek(hzf_p, fpos, SEEK_SET);
		fread(bitdata, 32, 1, hzf_p);
		for(j=0;j<2;j++)
			{
			fprintf(hzk_o,"db ");
			for(k=0;k<16;k++)
				{
				if(k<15) fprintf(hzk_o,"%3u,",(unsigned int)bitdata[k*2+j]);
				else fprintf(hzk_o,"%3u;",(unsigned int)bitdata[k*2+j]);
				
				}
			/*k++;
			fprintf(hzk_o,"%3u;",(unsigned int)bitdata[k*2+j]);*/
			fprintf(hzk_o,"\xd\xa");
			}
		++i;
		}
	}
//fwrite("db 0",7,1,hzk_o);
fprintf(hzk_o,";==================================================================\xd\xa");
fprintf(hzk_o,"hzktxt\tdb ");
for (i=0;i<n ;i++ )
	{fprintf(hzk_o,"%3u,",(unsigned char)ch2[i]);
	if((i+1)%13==0)
		{fprintf(hzk_o,"\xd\xa");
		fprintf(hzk_o,"\tdb ");
		}

	}
fprintf(hzk_o,"0dh,0ah,0;\xd\xa",ch2);
fclose(hzk_o);
fclose(hzf_p);
return;
}

⌨️ 快捷键说明

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