這裏是一個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