| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 652 人关注过本帖
标题:新手问题
取消只看楼主 加入收藏
sunnyboy1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-2-7
收藏
 问题点数:0 回复次数:1 
新手问题
以下两程序都能通过编译,但不能运行~请高手指点:
#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;                   /*显示下一汉字*/
 }
    }
}


以上两程序都是汉字显示程序.
搜索更多相关主题的帖子: drive include mode 
2008-03-22 15:20
sunnyboy1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-2-7
收藏
得分:0 
怎么没有高手指点一下?

2008-03-24 14:00
快速回复:新手问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025092 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved