【发布时间】:2011-03-30 12:07:38
【问题描述】:
我有一个 C 函数,它需要一个列表 \0 终止的字符串作为输入:
void external_C( int length , const char ** string_list) {
// Inspect the content of string_list - but not modify it.
}
从python(使用ctypes)我想根据python字符串列表调用这个函数:
def call_c( string_list ):
lib.external_C( ?? )
call_c( ["String1" , "String2" , "The last string"])
关于如何在 python 端构建数据结构的任何提示?请注意,我保证 C 函数不会更改 string_list 中字符串的内容。
问候
乔金
【问题讨论】:
-
C 函数如何知道它已到达
const char *序列的末尾? -
好吧;一般来说,它当然不知道。我的意图是用 NULL 来终止它,或者我可以传入一个长度以及 (char **) 指针——我可以完全控制有问题的 C 库。乔金
-
如果它不知道,那就没用了。您需要以某种方式告诉它,并告诉我们,以便我们可以为您提供有效的代码。
-
好的-好的;我不认为那是那么重要。无论如何,我现在已经更改了 C 函数的定义,所以它需要一个长度参数作为第一个参数。
-
抱歉,external_C 的参数类型应该是什么?