c语言编程或怎么打出来,c语言编程中,怎么打汉字啊??我是新手啊~~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

N久以有写的,图形模式下显示中文的程序,需要ucdos下ASC16,HZK16两个字库文件的支持。

里面的 printdot 函数为自己写的打点函数,非C标准的,用C标准函数代替一下。

参数:transparency 是否有背景色

printword(int x,int y,char *string,unsigned char color,unsigned char bgcolor,int transparency)

{

FILE *chinesestream,*englishstream;

int charpoint=0;

unsigned char mask=1;

int i,j,k;

unsigned char bit[32];

long fpos;

unsigned char c;

mask=mask<<7;

/*读入中文字库*/

if((chinesestream=fopen("HZK16","rb"))==NULL)

{

printf("Open hzk16 error!\n");

exit(0);

}

/*读入英文字库*/

if((englishstream=fopen("ASC16","rb"))==NULL)

{

printf("Open asc16 error!\n");

exit(0);

}

while(string[charpoint]!='\0')

{

c=string[charpoint];

if(c<128) /*要显示的字为英文*/

{

fpos=16L*string[charpoint];

fseek(englishstream, fpos, SEEK_SET);

fread(bit,16,1,englishstream);

for(i=0;i<16;i++)

{

for(j=0;j<8;j++)

{

if(bit[i]&mask)

printdot(x+j+charpoint*8,y+i,color);

else

if(transparency) printdot(x+j+charpoint*8,y+i,bgcolor);

bit[i]=bit[i]<<1;

}

}

charpoint++;

}

else /*要显示的字为中文*/

{

fpos=32L*(((unsigned char)string[charpoint]-161)*94+((unsigned char)string[charpoint+1]-161));

fseek(chinesestream, fpos, SEEK_SET);

fread(bit,32,1,chinesestream);

for(i=0;i<32;i=i+2)

{

for(k=0;k<2;k++)

for(j=0;j<8;j++)

{

if(bit[i+k]&mask)

printdot(x+j+charpoint*8+k*8,y+i/2,color);

else

if(transparency) printdot(x+j+charpoint*8+k*8,y+i/2,bgcolor);

bit[i+k]=bit[i+k]<<1;

}

}

charpoint++;

charpoint++;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值