新手问题
以下两程序都能通过编译,但不能运行~请高手指点:#include<stdio.h>
#include<graphics.h>
#include<bios.h>
main()
{
int drive,mode,i=0,n,j=0,k;
FILE *fp;
drive=DETECT;
initgraph(&drive,&mode,"f:\\tc\\tc");
fp=fopen("hzk16.dot","rb");
setbkcolor(WHITE);
setcolor(GREEN);
for(k=-450;k<650;k++)
{
DisHz16X16(k,200,20,4,"小心啊!别吓一跳!");
cleardevice();
}
circle(320,300,130);
setfillstyle(1,4);
fillellipse(320,320,20,20);
ellipse(270,260,0,360,20,30);
ellipse(270,260,0,360,10,20);
ellipse(370,260,0,360,20,30);
ellipse(370,260,0,360,10,20);
arc(320,320,200,300,70);
line(280,378,275,390);
line(275,390,295,400);
line(295,400,302,387);
line(291,382,285,396);
line(400,260,380,200);
while(bioskey(1)==0)
{
DisHz16X16(200,50,20,j,"按任意键退出程序");
if(j++>15) j=0;
setlinestyle(0,0,3);
if(i%20==0)
{
for(n=0;n<=6;n=n+3)
{
setcolor(RED);
line(300,240-n,240,210-n);
line(340,240-n,400,210-n);
}
for(n=0;n<=6;n=n+3)
{
setcolor(WHITE);
line(300,240-n,240,210-n);
line(340,240-n,400,210-n);
}
}
else
{
for(n=0;n<=6;n=n+3)
{
setcolor(RED);
line(300,250-n,240,220-n);
line(340,250-n,400,220-n);
}
for(n=0;n<=6;n=n+3)
{
setcolor(WHITE);
line(300,250-n,240,220-n);
line(340,250-n,400,220-n);
}
}
i++;
}
getch();
closegraph();
fclose(fp);
}
另一程序是:
#include<stdio.h>
#include<graphics.h>
FILE *fp;
/*******************************************************/
/* 函数功能:读取汉字字模 */
/* 输入参数:incode[]--汉字 */
/* 函数输出:bytes[]--字模 */
/*******************************************************/
void get_hzm(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; /*得到偏移位置*/
fseek(fp, offset, SEEK_SET); /*定位字模首字节*/
fread(bytes , 1, 32 , fp);
}
/*******************************************************/
/* 函数功能:显示字模 */
/* 输入参数:左上角坐标,颜色和字模 */
/* 函数输出:无 */
/*******************************************************/
void disp_hzm(int x,int y,int color,char buf[ ])
{
int i,j,k;
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if(buf[i*2+j]>>(7-k)&1)
putpixel(x+j*8+k,y+i,color);
}
void DisHz16X16(int x,int y,int width,int color,char *str)
{ /* width笔的粗细*/
unsigned char buf[35];
while(*str)
{
if((*str&0x80) && (*(str+1)&0x80))
{
/*判别是否是汉字,即最高位是否为1*/
get_hzm(str,buf);
disp_hzm( x, y, color, buf);
x+=(16+width);
str+= 2; /*显示下一汉字*/
}
}
}
以上两程序都是汉字显示程序.