Я пытаюсь отправить 2 строки из Python (3.2) в C, используя ctypes. Это небольшая часть моего проекта на моей малиновой пи. Чтобы проверить, правильно ли выполнялась функция C, я помещаю один из них в текстовый файл.
Код Python
string1 = "my string 1"
string2 = "my string 2"
# create byte objects from the strings
b_string1 = string1.encode('utf-8')
b_string2 = string2.encode('utf-8')
# send strings to c function
my_c_function(ctypes.create_string_buffer(b_string1),
ctypes.create_string_buffer(b_string2))
C-код
void my_c_function(const char* str1, const char* str2)
{
// Test if string is correct
FILE *fp = fopen("//home//pi//Desktop//out.txt", "w");
if (fp != NULL)
{
fputs(str1, fp);
fclose(fp);
}
// Do something with strings..
}
Проблема
В текстовом файле появляется только первая буква строки.
Я пробовал много способов конвертировать строковый объект Python с помощью ctypes.
- ctypes.c_char_p
- ctypes.c_wchar_p
- ctypes.create_string_buffer
При этих преобразованиях я все время получаю ошибку "неправильный тип" или "байты или целочисленный адрес, ожидаемый вместо экземпляра str".
Надеюсь, кто-то скажет мне, где это происходит. Спасибо заранее.