c语言如何输出汉字_理工男的C语言实验纪实:汉字的点阵显示

5206303b4fc78277cb4fb10c04b6fc8a.gif

晚上,突然收到导师一份加急的实验报告,要求用以点阵的方式输出所给汉字。

fd14a515467a03df2309e00466c7a8dc.png

老中医治疗你的颈椎病:https://www.bilibili.com/video/av45286925/

理工男之上,程序猿未满的自己立马抄起电脑,开启了Bug的一晚。

算是大三的老煤灰了,但仅仅掌握C语言一点皮毛的事实实在难以启齿,考量之后,选择了在点格纸上写出所需汉字,定位构成汉字的每个点之后再逐行进行输出,暂时没有其他办法,只好硬着头皮做了起来。

d2c2ad008e729b2d9b1c9d5b13dffb48.png

应该是16*16点阵的,因为偷懒只画了10行10列

为了简便,先在纸上画一个10*10的点阵,用铅笔连接点构成汉字,再将构成汉字的点定位并编程输出。

f119f62fd5124639256c8b0b5665a390.png

一次又一次地涂抹擦除,最终,在这些结果中找到了比较好看的“我”,并将点描在了方格纸上。

9f51108b0ba454a5ea80036b10ad3cfe.png

用10条printf语句输出结果:“我”,怎么样,是不是很像?好了,我说像就是像,不许反驳。

b2356273b4d3d506e80e6171b7ef3f83.png

深知程序存在巨大缺陷的自己又进行了反思。在尝试了for循环[似乎这并不是一个循环]、case选择[结果仍然没有改变]、以及cout和setw()语句[刚刚开课的C++]仍然无果后,我决心找到一种方便快捷的办法,于是便打开了百度。

d4bc47ebc9d6e9dcb9380faad9dbafd0.png

网址:https://blog.twofei.com/embedded/hzk.html

不懈的努力之后,终于找到了HZK16*16点阵字库的使用方法,迫不及待地点了进去。了解其原理后,我将示例的代码敲在了编译器上,却没有得到想要的结果。

e64d99c8f46f7ec7cd5d170855acadba.png

论坛上给出的理由是没有安装点阵字库,经过一番搜索,将HZK16*16点阵字库文件下载并复制到了程序所在的文件夹,再次运行,哈哈!一个完美的“我”终于显示了出来。

e411d06b76f19592f6b29fc64bc99ac2.png

接下来就是通过增加循环,将程序功能变为利用点阵显示多个汉字,将最终的结果输出:

#include #include int main(void)
{
FILE* fphzk = NULL;int i, j, k, offset;int flag;unsigned char buffer[32];unsigned char word[5];unsigned char key[8] = {
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
};
fphzk = fopen("hzk16", "rb");if(fphzk == NULL){fprintf(stderr, "error hzk16\n");return 1;
}while(1){……………………

调试、运行,又一次遇到了Bug,屏幕一片空白……我赶紧用鼠标猛戳了几下,

9a7189ee963d995d2cd622a30e223a22.png

还好……完美运行!

我们鲜有华丽的辞藻,

少些脉脉的情诗,

却 浪漫不减 一往情深,

只想将这枯燥的代码变成悦动的音符,

向你诉说内心深处的情话。

6c66ab1cd26d71ff22faaf42ef3b86d1.gif

在这里,理工男们用最真挚的方式向各位小仙女们说一声:

“女生节快乐哟!”

关注并回复女生节快乐,即可获取代码文本~

b18c8b38f06f60302f6d60d5830024af.gif

96e703439c4cacba5ad2ff468f91a18f.png

f53bd608ddf7633d4bdd1b7cd5c3e401.png

ab30cfd19283a29b7bc314983161f566.png

中国矿业大学(北京)机电与信息工程学院

新媒体工作室 | 微思潮 出品

本期编辑/孙成浩

责任编辑/孙成浩

责任主编/李运凯

投稿邮箱:weisichao2014@163.com

dad2fde2764cfa569795fd55a1b31631.gif

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值