急求助C语言问题,如何将数组转换成字符串

代码如下
#define MAX_UNI_INDEX 12

const unsigned short uni_table[][2]={
{0x53D1,0xB7A2}, /* 发: GB2312 Code: 0xB7A2 ==> Row:23 Col:02 */
{0x751F,0xC9FA}, /* 生: GB2312 Code: 0xC9FA ==> Row:41 Col:90 */
{0x706B,0xBBF0}, /* 火: GB2312 Code: 0xBBF0 ==> Row:27 Col:80 */
{0x707E,0xD4D6}, /* 灾: GB2312 Code: 0xD4D6 ==> Row:52 Col:54 */
{0x8FB9,0xB1DF}, /* 边: GB2312 Code: 0xB1DF ==> Row:17 Col:63 */
{0x5883,0xBEB3}, /* 境: GB2312 Code: 0xBEB3 ==> Row:30 Col:19 */
{0x5F02,0xD2EC}, /* 异: GB2312 Code: 0xD2EC ==> Row:50 Col:76 */
{0x5E38,0xB3A3}, /* 常: GB2312 Code: 0xB3A3 ==> Row:19 Col:03 */
{0x540A,0xB5F5}, /* 吊: GB2312 Code: 0xB5F5 ==> Row:21 Col:85 */
{0x91CD,0xD6D8}, /* 重: GB2312 Code: 0xD6D8 ==> Row:54 Col:56 */
{0x8D85,0xB3AC}, /* 超: GB2312 Code: 0xB3AC ==> Row:19 Col:12 */
{0x6807,0xB1EA}, /* 标: GB2312 Code: 0xB1EA ==> Row:17 Col:74 */
};

unsigned short Search(const unsigned short x)
{
int i ;
for(i=0;i<=11;i++)
{
if (x == uni_table[i][1])
return uni_table[i][0];

}
return 0;
}

void UniToStr(const unsigned short *gb,unsigned char *str)
{
unsigned short unicode;
while( *gb )
{
if( (*gb >> 8) == 0) //ASCII
*str++ = (*gb & 0xff);
else {
unicode = Search(*gb);
*str ++ = (unicode >> 8) & 0xff;
*str ++ = unicode & 0xff;
}
gb++;
}

*str ++ = '\0';
}

但是转换出来是乱码,求大神知道啊

c++里面有现成的函数来实现的 这里数组里如果存放的是数字很好解决 字符的话就要用到库函数了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-24
为什么要用二元数组呢,我新手,提个问,问什么不用一元,也一样呢追问

因为我要实现国标码和unicode码互相查

第2个回答  2012-05-23
同样求解追问

我已经想出来了十六进制数例如0xEDF2,取出其中的每一位,如果是数字就+48,如果是字母就+55,然后就变成ASCII码里面对应的数字或者字母,然后用字符串形式输出就行了

追答

谢谢啦

相似回答