1 2 3 4 5 6 7 8 9 | 版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7712496.html 作者:窗户 QQ:6679072 E-mail:6679072@qq.com |
程序写完了,必须要验证,这是重要的方法论。因为如果不验证,则不会知道程序写的对还是不对。学过人工智能或者控制论都知道,反馈非常重要,反馈形成闭环,可以用来指导、调节你的输出。而对于编程这个活动来说,验证也一样是产出的反馈,形成闭环,过程中测出的所有BUG都会反馈过来,产生调整代码的输出。
一句话,闭环靠谱,开路不靠谱。
我们生成了生成字库的程序之后,按理也应该验证。C语言的程序,没有main函数,自然也需要另外一个C语言带main函数的调用来验证了。我们这里就把选取使用字的文本根据给出的裁剪字库打印出来即可。用终端模拟一样可以有挺好的效果,没必要控制显示器。
我们写的C语言文件如下,给出了汉字(16X16)的打印,以及ASCII字符(16X8)的打印。
#include <stdio.h> /* http://www.cnblogs.com/Colin-Cai */ //打印汉字 void print_chinese(const unsigned char *buf) { int i,j,k; unsigned char c; for(i=0;i<16;i++) { for(j=0;j<2;j++) { for(k=7;k>=0;k--) { c = (unsigned char)0X1 << k; if(*buf & c) printf("*"); else printf(" "); } buf++; } printf("\n"); } printf("\n\n\n"); } //打印ASCII字符 void print_ascii(const unsigned char *buf) { int i,j,k; unsigned char c; for(i=0;i<16;i++) { for(j=0;j<1;j++) { for(k=7;k>=0;k--) { c = (unsigned char)0X1 << k; if(*buf & c) printf("*"); else printf(" "); } buf++; } printf("\n"); } printf("\n\n\n"); } /* 裁剪中提供的两个查找函数 */ const unsigned char *find_ascii_font(unsigned char c); const unsigned char *find_chinese_font(unsigned char GBH, unsigned char GBL); int main(int argc, char*argv) { unsigned char c, c2; const unsigned char* p; while(1) { if(fread(&c, 1, 1, stdin)!=1) return 0; if(c<0X80) { /* 就以此判断是ASCII字符了 */ p = find_ascii_font(c); if(p != NULL) { print_ascii(p); } continue; } if(fread(&c2, 1, 1, stdin)!=1) return 0; /* 打印汉字 */ p = find_chinese_font(c,c2); if(p != NULL) { print_chinese(p); } } return 0; }
测试一下效果
分类:
解决方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具