[英]Conversion of wchar_t into char
我正在尝试使用wcstombs
将wchar_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);
如果我在szBuf
有alice和szBuf1中有szBuf1
则pass
将给出正确的值,但user
将具有aalice123之类的值。 有什么错误?
您正在调用Undefined Behaviour,因为您在缓冲区边界之外进行写入。 您的user
缓冲区和pass
缓冲区的长度均为1
(它们是由""
的副本初始化的数组)。 因此,您很乐意写随机存储器,任何事情都可能发生。
您的目标缓冲区太小。
char user[] = "";
等于char user[1] = "";
。 这意味着您将写入未分配的空间,这是未定义的行为 。 这非常糟糕,因为无法保证会发生什么。
指定目标缓冲区的大小: char user[250] = "";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.