2011-01-14 9 views
5

Ich möchte ein Array von Char Zeiger zu einer C-Funktion übergeben.Wie Element in c_char_p Array einfügen

Ich beziehe mich auf http://docs.python.org/library/ctypes.html#arrays

ich den folgenden Code schreiben.

from ctypes import * 

names = c_char_p * 4 
# A 3 times for loop will be written here. 
# The last array will assign to a null pointer. 
# So that C function knows where is the end of the array. 
names[0] = c_char_p('hello') 

und ich bekomme den folgenden Fehler.

TypeError: '_ctypes.PyCArrayType' object does not support item assignment

Irgendeine Idee, wie ich das auflösen kann? Ich möchte eine Schnittstelle mit

c_function(const char** array_of_string); 

Antwort

12

Was Sie tat, war ein Array Typ, nicht eine tatsächliche Array zu erstellen, so dass im Grunde:

import ctypes 
array_type = ctypes.c_char_p * 4 
names = array_type() 

Sie dann etwas entlang der Linien von tun können:

names[0] = "foo" 
names[1] = "bar" 

... und gehen Sie Ihre C-Funktion mit dem names Array als Parameter zu nennen.