版主你好,我请教一个问题。我用mini2440发中文短信,需要用mbstowcs()函数,我在linux下用gcc编译通过了,转换出来的字符也是对的,但是用arm-linux-gcc编译后下载到mini2440后,这个函数就不能转换了,返回值为-1.希望群主能结合你做的那个发短信的模块,讲讲怎么在嵌入式linux上转换字符。
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <locale.h>
int gsmBytes2String(wchar_t *pSrc, char* pDst, int nSrcLength)
{
const char tab[]= "0123456789ABCDEF";
int i;
for( i=0; i <nSrcLength; i++)
{
*pDst++ = tab[*pSrc >> 12];
*pDst++ = tab[(*pSrc >> 8) & 0x0f];
*pDst++ = tab[(*pSrc >> 4) & 0x00f];
*pDst++ = tab[*pSrc & 0x000f];
pSrc++;
}
*pDst = '\0';
return nSrcLength * 4;
}
int main()
{
int ret;
char str[20] = "节日快乐";
wchar_t array[20]={0};
setlocale(LC_ALL, "zh_CN.gb2312");
if((ret=mbstowcs(array, str, strlen(str)))==-1)
{
printf("ret=-1\n");
return -1;
}
printf("ret=%d\n", ret);
printf("array=");
int i;
for(i=0; i<ret; i++)
printf("%x", array);
printf("\n");
char pDst[50]={0};
gsmBytes2String(array, pDst, ret);
printf("pDst =%s\n", pDst);
return 0;
}