西文DOS中输出汉字!!!!!问题!!
帮忙看一下下面程序!!
运行后 有现实 但看不清楚!!
#include <stdio.h>
#include <graphics.h>
#include <fcntl.h>
#include <io.h>
#define M 2
#define N 2
int hzk_p;
void open_hzk(void);
void get_hz(char intcode[],char bytes[]);
void dishz(int x,int y,char cade[],int color);
main()
{
int x=10;int y=100;
char *s="00级 轧钢2班 课程设计";
int driver=DETECT;
int mode=0;
initgraph(&driver,&mode,"e:\\tc2");
open_hzk();
while(*s!=NULL)
{
while((640-x)>48&&*s!=NULL)
{dishz(x,y,s,LIGHTRED);
x+=24*M;
s+=2;
}
x=10;y+=32*N;
}
getch();
close(hzk_p);
closegraph();
}
void open_hzk()
{
hzk_p=open("c:\\ucdos\\fnt\\hzk24H",O_BINARY|O_RDONLY);
if(hzk_p==-1)
{
printf("The file HZk24H not exit! ENTER to system\n");
getch();
closegraph();
exit(1);
}
}
void get_hz(char incode[],char bytes[])
{
unsigned char qh,wh;
unsigned long offset;
qh=incode[0]-0xa0;
wh=incode[1]-0xa0;
offset=(94*(qh-1)+(wh-1))*32L;
lseek(hzk_p,offset,SEEK_SET);
read(hzk_p,bytes,72);
}
void dishz(int x0,int y0,char code[],int color)
{
unsigned char mask[]={0x80,0x40,0x20,0x10,0x80,0x40,0x20,0x10};
register int k,q,i,j,r;
char mat[72];
get_hz(code,mat);
for(i=0;i<48;i+=2)
for(q=0;q<2;q++)
for(j=0;j<=2;j++)
for(k=0;k<8;k++)
{ if((mask[k%8]&mat[3*i/M+j])!=NULL)
for(r=0;r<N;r++)
putpixel(x0+i+M,y0+j*N*8+k*N+r,color);
}
}