帮忙找一下错
#include <graphics.h>#define HZKLOD "f:\\hzk16"
#define BGILOD "e:\\TCPP30H\\bgi"
#define ASCLOD "f:\\asc16"
void graphini()
{
int gd=DETECT,gm;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,BGILOD);
}
void myprintf(int x,int y,char *m,int color)
{
FILE *fp,*fpa;
int i,j,k;
long int fpos; /*具体字在字库中的偏移量*/
for(i=0;*(m+i)!='\0';i++)
{
if(*(m+i)<0)
{
if((fp=fopen(HZKLOD,"rb"))==NULL) /*打开16*16点阵汉字字库*/
{
printf("Cannot open hzk16!press any key to quit!");
getch();
exit(0);
}
else
{
unsigned char qh,wh,bitdata[32],bit[8]={128,64,32,16,8,4,2,1};
int k,j;
qh=*(m+i)-0xa0; /*汉字区位码*/
wh=*(m+i+1)-0xa0;
fpos=(94*(qh-1)+(wh-1))*32L ; /*获得字模在字库中的位置*/
fseek(fp,fpos,SEEK_SET);
fread(bitdata,32,1,fp); /*把该汉字字模读入到bitdata中*/
for(k=0;k<16;k++)
for(j=0;j<8;j++) /*和bit[]与操作以后,在屏幕上画点*/
{
if(bitdata[2*k]&bit[j]) putpixel(x+j,k+y,color);
if(bitdata[2*k+1]&bit[j]) putpixel(x+8+j,k+y,color);
}
i++;
x+=16;
}
}
else
{ char buffera[16];
if((fpa=fopen(ASCLOD,"rb"))==NULL) /*打开16*16点阵英文字库*/
{
printf("Can't open asc16 !press any key to quit!");
getch();
exit(0);
}
fpos=(*(m+i))*16;
fseek(fpa,fpos,SEEK_SET); /*****查找英文字符在ASC16文件中的位置******/
fread(buffera,1,16,fpa); /****读取英文字符在ASC16文件中的字段*******/
for(k=0;k<16;k++)
for(j=0;j<8;j++)
if(((buffera[k]>>(7-j))&0x1)!=NULL)
putpixel(j+x,k+y,color); /**如果该位非空,则画点***********/
x+=8; /******屏幕光标偏移量***********************/
}
if(x>=getmaxx())
{ y+=16;
x=0; }
}
fclose(fp); /*********关闭文件指针*********/
fclose(fpa); /*********关闭文件指针*********/
}
void main()
{
graphini();
myprintf(40,200,"This is 一个中英文混合输出 program!",BLACK);
}
程序运行 总是说 Can't open asc16 !press any key to quit! 可是 我的 asc16 是放在f:\\asc16" 啊
[ 本帖最后由 ymqq 于 2010-8-19 20:21 编辑 ]