繁体   English   中英

将wchar_t转换为char

[英]Conversion of wchar_t into char

我正在尝试使用wcstombswchar_t转换为char 如果仅转换1个值,则效果很好,但是当转换多个值时,会产生意外结果。 这些是我要转换的两个wchar_t值:

wchar_t szBuf[BUFF_LEN];
wchar_t szBuf1[BUFF_LEN];

并使用wcstombs转换:

char user[]=""; 
int  length = wcstombs(user,szBuf,250);
char pass[]="";
int  length1 = wcstombs(pass,szBuf1,250);

如果我在szBufaliceszBuf1中有szBuf1pass将给出正确的值,但user将具有aalice123之类的值。 有什么错误?

您正在调用Undefined Behaviour,因为您在缓冲区边界之外进行写入。 您的user缓冲区和pass缓冲区的长度均为1 (它们是由""的副本初始化的数组)。 因此,您很乐意写随机存储器,任何事情都可能发生。

您的目标缓冲区太小。

char user[] = ""; 等于char user[1] = ""; 这意味着您将写入未分配的空间,这是未定义的行为 这非常糟糕,因为无法保证会发生什么。

指定目标缓冲区的大小: char user[250] = "";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM