⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printchar.c

📁 这是一些c++例程
💻 C
字号:
#include <graphics.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <stdlib.h>
#include <conio.h>

#define ROW 1				/* 纵坐标放大倍数 */
#define COL 2				/* 横坐标放大倍数 */

void main()
{
	int x,y;
	char *s="汉字显示程序";		/* 需要显示的汉字 */
	FILE *fp;
	char buffer[32];			/* buffer用来存储一个汉字的点阵字节 */
	register m,n,i,j,k;
	unsigned char qh,wh;
	unsigned long offset;
	int gd=DETECT,gm; 
	initgraph(&gd,&gm," ");		/* 屏幕初始化 */


	/* 打开汉字库文件,该字库可以在ucdos中找到,这里需要确保文件路径正确 */
	if ((fp=fopen("hzk16","rb"))==NULL)
	{
		/* 找不到字库文件,出错处理 */
		printf("Can't open haz16,Please add it");
		getch(); 
		closegraph(); 
		exit(0);
	}

	x=20; y=100; 			/* 显示开始位置设置 */
	while(*s)			/* 字符串以'\0'结束,这里将其作为字符串结束的标志 */
	{
		qh=*(s)-0xa0; 			
		wh=*(s+1)-0xa0;
		offset=(94*(qh-1)+(wh-1))*32L;/* 计算该汉字在字库中偏移量 */
		fseek(fp,offset,SEEK_SET);	/* 将文件指针移到对应位置 */
		fread(buffer,32,1,fp); 		/* 取出汉字32字节的点阵字模存入buffer中(一个汉字)*/	

		/* 将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字 */
		for (i=0;i<16;i++) 
			for(n=0;n<ROW;n++)
				for(j=0;j<2;j++)	/* 两个字节才能表示一行16*16 */
					for(k=0;k<8;k++)
						for(m=0;m<COL;m++)
							if (((buffer[i*2+j]>>(7-k))&0x01)!=0)	/* 该位为1才显示 */
								putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);
		
		s+=2;		/* 因为一个汉字内码占用两个字节,所以s必须加2 */
		x+=30;		/* 下一个汉字的显示位置向右移动一定距离 */
	}

	getch();		/* 敲击键盘才使程序退出 */
	closegraph();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -