С питоном Я пытаюсь использовать С функцией, которая возвращает динамически выделяемую нулевой -завершённый массив целых чисел:нулю прекращается динамический массив в качестве возвращаемого значения в Python
int* my_func(void)
{
int i;
int *ret = (int*)malloc((LEN + 1) * sizeof(int));
for (i = 0; i < LEN; i++) ret[i] = 1;
ret[LEN] = 0
return ret;
}
мне нужно что-то вроде
from ctypes import *
l = cdll.LoadLibrary("lib.so")
my_func = l.my_func
my_func.restype = c_int * LEN
for x in my_func(): print x
Проблема в том, что LEN
неизвестен в коде python, мне нужно прочитать массив до первого нулевого элемента.
ctypes позволяет установить 'restype' в массив, но он не делает то, что вы думаете. Он сохраняет возвращенный указатель как первый элемент массива. – eryksun