CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求助!用Turboc调用UCDOS的中文字库,输出汉字!如何实现?

楼主lishaoxun(岚星)2004-09-01 20:24:28 在 C/C++ / C语言 提问

今天遇到个问题。如何用Turboc输出汉字?想了半天不得其解。  
  特来求救!大家能否帮忙解答,利用UCDOS的字库,让TC输出16×16点阵的汉字。谢谢 问题点数:50、回复次数:4Top

1 楼xteaj(半桶水)回复于 2004-09-01 21:00:05 得分 25

int   handle;  
  int   openzk(void)  
  {  
  handle=open("c:\\ucdos\\hzk16",O_RDONLY|O_BINARY);  
  if(handle==-1)  
  {  
  outtext("error   on   open   file");  
  exit(1);  
  }  
  return   handle;  
  }  
  int   putz16(int   x1,int   y1,int   z,int   color,int   m,int   n,char   *p)  
  {  
  long   wz;  
  unsigned   int   i,f=0,c1,c2;  
  int   i1,i2,i3,i4,i5,rec;  
  char   by[32];  
  while((i=*p++)!=0)  
  {  
  if(i>0xa1)  
  if(f==0)  
  {  
  c1=(i-0xa1)&0x07f;  
  f=1;  
  }  
  else  
  {  
  c2=(i-0xa1)&0x07f;  
  f=0;  
  rec=c1*94+c2;  
  wz=rec*32L;  
  lseek(handle,wz,SEEK_SET);  
  read(handle,by,32);  
  for(i1=0;i1<16*m;i1=i1+m)  
  for(i4=0;i4<m;i4++)  
  for(i2=0;i2<2;i2++)  
  for(i3=0;i3<8;i3++)  
  if(getbit(by[i1/m*2+i2],7-i3))  
  for(i5=0;i5<n;i5++)  
  putpixel(x1+i2*8*n+i3*n+i5,y1+i1+i4,color);  
  x1=x1+16*m+z;  
  }  
  }  
  return(x1);  
  }  
  Top

2 楼storyboy(故事)回复于 2004-09-03 17:41:29 得分 25

#include<stdio.h>  
  #include<graphics.h>  
   
  /*   x,y为显示坐标,s为显示字符串,colour为颜色   */  
  void   hanzi16(int   x,int   y,char   *s,int   colour)  
  {  
    FILE   *fp;  
    char   buffer[32];                                       /*   32字节的字模缓冲区   */  
    register   i,j,k;  
    unsigned   char   qh,wh;  
    unsigned   long   location;  
    if((fp=fopen("hzk16","rb"))==NULL)  
      {  
        printf("Can't   open   hzk16!");  
        getch();  
        exit(0);  
      }  
    while(*s)  
      {  
        qh=*s-0xa0;  
        wh=*(s+1)-0xa0;  
        location=(94*(qh-1)+(wh-1))*32L;         /*   计算汉字字模在文件中的位置   */  
        fseek(fp,location,SEEK_SET);  
        fread(buffer,32,1,fp);  
        for(i=0;i<16;i++)  
          for(j=0;j<2;j++)  
            for(k=0;k<8;k++)  
              if(((buffer[i*2+j]>>(7-k))&0x1)!=NULL)  
                putpixel(x+8*j+k,y+i,colour);  
        s+=2;  
        x+=16;                                                             /*   汉字间距   */  
      }  
    fclose(fp);  
  }  
   
  main()  
  {  
    int   gd=DETECT,gm;  
    initgraph(&gd,&gm,"");  
   
    hanzi16(246,200,"疯狂甲虫乐园!",BROWN);  
   
    getch();  
    closegraph();  
  }Top

3 楼xloveme(浪人)回复于 2004-09-04 16:23:00 得分 0

用command.com/k   c:\windows\command\pdos95.exe   就可以了。Top

4 楼hcj2002(流浪者·躬自厚而薄责于人 )回复于 2004-09-04 20:04:08 得分 0

没有用过  
   
  ^_^Top

相关问题

  • 调用字库问题判断是否为词组
  • 如何显示UCDOS的曲线字库或WINDOWS的TTF字库
  • 关于矢量字库在编程语言中调用的问题?
  • 如何USB接口下调用打印机硬字库进行打印
  • 谁有UCDOS的16点阵简体字库?
  • 如何实现按回车后调用数据库的字库,用拼音码或五笔码输入物资名称!
  • 汉字字库
  • 字库问题
  • 字库问题?
  • 字库怎么用?

关键词

  • 汉字
  • ucdos
  • 输出
  • hzk
  • qh
  • wz
  • xa
  • wh
  • fp
  • rec

得分解答快速导航

  • 帖主:lishaoxun
  • xteaj
  • storyboy

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo