SWIG:字符串没有被完全复制或显示?

2024-09-29 21:41:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个指向字符数组的指针发送到我的函数之一。为了生成这个char*,我在我的一个c文件中使用这个函数

charPtr = myProj.strAll ( 8 );

strAll在哪里:

^{pr2}$

然后我将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

有人知道发生了什么吗?在


Tags: 函数指向abcprintmyprojcharpopulatemaxlen
1条回答
网友
1楼 · 发布于 2024-09-29 21:41:08

ABCD12348个个字符。但是您还应该为终止字符\0提供一个额外的字节。每个C字符串都应该以\0结尾。在

myProj.Populate ( "ABCD1234", charPtr, 8 );

{/cd4}字符的最后一个位置应该在哪个位置结束。在

我不知道为什么你只分配5个位置,在那里你试图复制一个长度为8个字符的字符串。在

^{pr2}$

相关问题 更多 >

    热门问题