1
我需要將一個指向字符數組的指針發送給我的一個函數。爲了產生這種字符*,我用這個功能使得這樣調用SWIG:字符串未被完全複製或顯示?
charPtr = myProj.strAll (8);
的我的C文件中的一個,其中strAll是:
char * strAll (int size) {
return malloc(sizeof(char) * size);
}
我再通charPtr到這樣的功能:
myProj.Populate (char* dataIn, char* dataOut, maxLen);
將副本dataIn填充到dataOut中,使用maxLen作爲大小限制。它使用的memcpy超過通過這樣的複製:
memcpy (dataOut, dataIn, maxLen);
用法:
myProj.Populate ("ABCD1234", charPtr, 8); //maxLen is the # of bytes I've allocated for charPtr.
然而,當我告訴Python打印出來charPtr,它只會打印ABC。
預計:
>>charPtr
'ABCD1234'
>>print charPTr
ABCD1234
實際:
>>charPtr
'ABC'
>>print charPTr
ABC
有誰知道發生了什麼事?
嘿!感謝回覆。我失去了思路。我打算分配爲8.而我知道有9個字符,包括空字符,我只用它作爲示例函數。它實際上是一個適應那個空字符的函數。但是,問題是它只打印前3個字符。即使我給第一個str分配了20。 –