这里是一个wchar_t的*字符串转换为一个char *字符串的C代码:致命错误*为char *转换
wchar_t *myXML = L"<test/>";
size_t length;
char *charString;
size_t i;
length = wcslen(myXML);
charString = (char *)malloc(length);
wcstombs_s(&i, charString, length, myXML, length);
代码编译,但在exectution在上次检测到致命错误并停止运行。
现在,如果我替换这一个最后一行:
wcstombs_s(&i, charString, length+1, myXML, length);
我刚添加+1到第三个参数。然后,它完美地工作...
为什么需要添加此技巧?或者我的代码中有其他缺陷吗?
注意:`*`结尾是:`wchar_t *`和`char *`。 – 2011-02-11 10:35:50
感谢您的精确。 – Dunaril 2011-02-11 10:37:58
@Marcelo:这是一个品味和习惯的问题,并且有充足的理由像Dunaril那样编写它(例如`int * a,b;`表示`b`也是``int`的指针)。 – Thomas 2011-02-11 10:38:45