| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 454 人关注过本帖
标题:[原创]教你如何放大显示ASCII字符(文本模式)
收藏  订阅  推荐  打印 
xql0501
Rank: 1
等级:新手上路
帖子:16
积分:460
注册:2007-3-16
[原创]教你如何放大显示ASCII字符(文本模式)

/* 以'#'符号来显示放大显示ASCII字符(以前的老资料,适用于DOS环境)
说明:0xF000FA6E这个地址是每个(ASCII)字符显示点阵的首地址,
每个字符大小为8*8,每个字符点阵占连续的8个字节,每一字节表示
一行,从上而下,从左而右.

本人 QQ:527274766
C语言群:31545052 和 31544991

参考以下代码:
*/

#include<stdio.h>
#include<conio.h>

void ShowBigChar(int x,int y,char ch)
{ /* 单个字符放大 */
int i,j;
char far *position;
unsigned char test;

position=(char far *)0xF000FA6EL+ch*8;/* 获取ch对应的字符点阵的首地址*/
for(i=0;i<8;++i) /* 8行 */
{
gotoxy(x*8+1,y+i); /* 8*8点阵,所以每个字符占8列 */
test = 0x80; /* 对应2进制为1000,0000 */
for(j=0;j<8;++j) /* 8列 */
{
if(*position & test) putchar('#');/* 按位与,若不为0,即显示# */
else putchar(' ');/* 否则不显示 */
test>>=1; /* 左移一位,依次变成0100,0000 0010,0000 0001,0000 ... */
}
++position; /* 移到下一字节,既点阵的第2行*/
}
}

void ShowBigString(char str[])
{ /* 字符串放大 */
int i;

if(strlen(str)>30)
{ /* 因为屏幕大小为80*25,所以每行最多显示
80/8=10个字符,最多显示25/8=3行 */
printf("Too much word! ( <30 )");
return;
}
for(i=0;str[i]!='\0';++i) /* 逐个字符显示 */
ShowBigChar(i%10,i/10*8+1,str[i]); /* i/10*8换行*/
}

int main()
{
char s[] = "xql0501 QQ: 527274766";/* 要放大显示的字符串 */

clrscr(); /* 清屏 */
ShowBigString(s); /* 放大显示 */
getch();
return 0;
}

搜索更多相关主题的帖子: ASCII字符  文本  模式  int  点阵  
2007-4-4 22:00
moonwalker
Rank: 4
等级:高级会员
威望:1
帖子:907
积分:9698
注册:2007-3-2

正想找这方面的资料,谢谢楼主!


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-4-4 23:14
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.045904 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved