shell编程/字库裁剪(3)——验证

  版权申明:本文为博主窗户(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;
}

  测试一下功效

图片 1