c语言中bc是字母怎么表达,求大神。用BC如何做汉字显示啊

C/C++ code#include

#include

#include

#include

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值