Ich habe eine C-Funktion, die eine Liste \ 0 terminierte Strings als Eingabe erwartet:eine Liste von Strings aus Python/ctypes bis C Funktion übergeben erwartet char **
void external_C(int length , const char ** string_list) {
// Inspect the content of string_list - but not modify it.
}
Von Python (mit ctypes) I möchte diese Funktion auf eine Liste von python-Strings basierend nennen:
def call_c(string_list):
lib.external_C(??)
call_c(["String1" , "String2" , "The last string"])
Irgendwelche Tipps, wie Sie die Datenstruktur auf der python-Seite aufzubauen? Beachten Sie, dass ich garantiere, dass die C-Funktion den Inhalt der Strings in string_list NICHT ändert.
Grüße
joakim
Wie weiß die C-Funktion, dass sie das Ende der Sequenz von 'const char *' erreicht hat? – habnabit
Gut; im Allgemeinen weiß es natürlich nicht. Meine Absicht war, es mit einem NULL zu beenden, alternativ kann ich eine Länge sowie den Zeiger (char **) übergeben - ich habe die volle Kontrolle über die betreffende C-Bibliothek. Joakim –
Wenn es nicht weiß, das ist ziemlich nutzlos. Du musst es irgendwie sagen und sag * uns * damit wir dir Code geben können, der funktioniert. – habnabit