首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求大神。用BC如何做汉字显示啊

2012-10-19 
求大神。。。用BC怎么做汉字显示啊~~~现在小妹要做一个驾驶员科目一模拟考试系统,不知道怎么把调用能把题库的

求大神。。。用BC怎么做汉字显示啊~~~
现在小妹要做一个驾驶员科目一模拟考试系统,不知道怎么把调用能把题库的汉字显现出来啊~~~

[解决办法]
以下我曾经写过的显示16x16点阵字库的代码,你可以参考一下:

C/C++ code
#include <stdlib.h>#include <string.h>#include <iconv.h>#include <stdio.h>#define hz_offset(hz)    (((hz[0] - 0xa1) * 94 + (hz[1] - 0xa1)) * 32)/* 字符串转码 */int decoding(char* from_charset, char* to_charset, char* inbuf, int inlen, char* outbuf, int outlen){    iconv_t cd;    char** pin = &inbuf;    char** pout = &outbuf;    if((cd = iconv_open(to_charset, from_charset)) == (iconv_t)0)    {        return -1;    }    memset(outbuf, 0, outlen);    if(iconv(cd, pin, &inlen, pout, &outlen) == -1)    {        iconv_close(cd);        return -1;    }    iconv_close(cd);    return 0; }/* 汉字从UTF-8转为GB2312编码 */int hz_decoding(char* hz_utf8, char* hz_gb2312){    return decoding("utf-8", "gb2312", hz_utf8, 3, hz_gb2312, 3);}/* 打印汉字 */void hz_show(unsigned char* datas){    int i;    int j;    int k;    unsigned char ch;    for(i = 0; i < 16; i++)    {        for(j = 0; j < 2; j++)        {            ch = datas[i * 2 + j];            for(k = 0; k < 8; k++)            {                if(ch & 0x80)                {                    printf("%c ", '*');                }                else                {                    printf("  ");                }                ch <<= 1;            }        }        printf("\n");    }}int main(int argc, char* argv[]){    FILE* hzk;    unsigned char hz_utf8[3] = "宋";    unsigned char hz_gb2312[3];    unsigned char hz_datas[32];    hz_decoding(hz_utf8, hz_gb2312);    printf("%x, %x\n", hz_gb2312[0], hz_gb2312[1]);    if((hzk = fopen("simhei_gb2312_16.ds", "rb")) == NULL)    {        return -1;    }    fseek(hzk, hz_offset(hz_gb2312), SEEK_SET);    fread(hz_datas, 32, 1, hzk);    hz_show(hz_datas);    fclose(hzk);    return 0;} 

热点排行