使用wcstombs_s()把WCHAR字串转换成char字串,怎么转不了中文?

wrongagain08 wrongagain08 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用msdn的例子来试验:

#include "stdafx.h"

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#define BUFFER_SIZE 100

int main( void )
{
size_t i;
char * pMBBuffer = (char *)malloc( BUFFER_SIZE );
wchar_t* pWCBuffer = L"Hello, world."; //(1)
//wchar_t* pWCBuffer = L"世界, 你好."; //换成_T("世界, 你好.")也不行 //(2)

printf( "Convert wide-character string:\n" );

// Conversion
wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE,
pWCBuffer, (size_t)BUFFER_SIZE );

// Output
printf(" Characters converted: %u\n", i);
printf(" Multibyte character: %s\n\n",
pMBBuffer );

// Free multibyte character buffer
if (pMBBuffer)
{
free(pMBBuffer);
}
}

msdn的代码肯定是没事的,但我把上面(1)句注释掉换成(2)句,即字串换成中文,就不行了!打印不出来转换后的文字,设断点查pMBBuffer,发现wcstombs_s调用后pMBBuffer是空的,什么都没转出来。

为什么英文可以中文不行?why?
...全文
评论 15
收藏 已收藏
分享
返回顶部
wrongagain08
C语言 70,039 成员 243,237 内容