中级会员
 
- 积分
- 349
- 金钱
- 349
- 注册时间
- 2015-2-27
- 在线时间
- 81 小时
|
5金钱
在提调试程序的时候,想用这个函数把字符串转换成gbk码,但是程序执行到这里的时候就死在这个函数里了,下面是代码
void sim900a_unigbk_exchange(u8 *src,u8 *dst,u8 mode)
{
u16 temp;
u8 buf[2];
if(mode)//gbk 2 unicode
{
while(*src!=0)
{
if(*src<0X81) //非汉字
{
printf("7");//自己加的标志位,便于观察程序执行到哪里
temp=(u16)ff_convert((WCHAR)*src,1);
src++;
}else //汉子占两个字节
{
printf("8");
buf[1]=*src++;
buf[0]=*src++;
temp=(u16)ff_convert((WCHAR)*(u16*)buf,1);
}
printf("9");
*dst++=sim900a_hex2chr((temp>>12)&0X0F);
printf("10");
*dst++=sim900a_hex2chr((temp>>8)&0X0F);
printf("11");
*dst++=sim900a_hex2chr((temp>>4)&0X0F);
printf("12");
*dst++=sim900a_hex2chr(temp&0X0F);
printf("13");
}
}else //unicode 2 gbk
{
while(*src!=0)
{
buf[1]=sim900a_chr2hex(*src++)*16;
buf[1]+=sim900a_chr2hex(*src++);
buf[0]=sim900a_chr2hex(*src++)*16;
buf[0]+=sim900a_chr2hex(*src++);
temp=(u16)ff_convert((WCHAR)*(u16*)buf,0);
if(temp<0X80){*dst=temp;dst++;}
else {*(u16*)dst=swap16(temp);dst+=2;}
}
}
*dst=0;//添加结束符
}
这个函数是调用他的
sim900a_unigbk_exchange(phone,q1,1);
phone是一个二十个字节的数组,q1是指针,
程序执行到printf("9");的时候就死了,
我想问下可能是由于什么原因造成的,谢谢各位了
|
|