p**o 发帖数: 3409 | 1 手写了一些C扩展,有些返回多重指针的函数不知道怎么用SWIG来包来供Python调用……
比如下面这个strsplit()函数,返回的是char**,怎么改才能让Python收到一个list (
of strings)?
http://www.swig.org/tutorial.html
我只是照tutorial简单地把函数声明抄进.i文件,Python中调用时返回的是
#include
#include
#include
/* Split an input string 'instr', using a set of given delimiters, to an
array of strings of at most 'maxparts' parts. */
char **strsplit (const char *instr, const char *delimiters, size_t maxparts)
{
char **tokens = (char **) calloc (maxparts, sizeof(char *));
char *_instr = strdup (instr); /* copy */
size_t tokenmaxsize = strlen (_instr) + 1;
char *pstr = strtok (_instr, delimiters);
int i;
for (i=0; pstr != NULL; i++) {
tokens[i] = (char *) malloc (tokenmaxsize * sizeof(char));
strcpy (tokens[i], pstr);
pstr = strtok (NULL, delimiters);
}
free (_instr);
return tokens;
}
/* For testing purpose. */
int main()
{
printf("\ntest 2:\n");
char **quads = strsplit("123.45.6.78.9", ".", 5);
printf("%s --> ", "123.45.6.78.9");
printf("%s %s %s %s %s\n", quads[0], quads[1], quads[2], quads[3], quads
[4]);
return 0;
} | l********a 发帖数: 1154 | | p**o 发帖数: 3409 | 3 我是举个简单易懂的例子,这个strsplit()其实是供其他C函数调用的,
还有好些类似的函数是py没有的。
【在 l********a 的大作中提到】 : python不是有字符串处理函数吗?
|
|