Первый аргумент также должен быть байтовой строкой:
msvcrt.printf(b"%s", string)
Возвращаемое значение printf - это количество напечатанных символов, которое в этом случае должно быть 12.
Edit:
Если вы хотите, чтобы строка выводилась вместо печати, вы можете использовать sprintf
. Это опасно и НЕ рекомендуется.
s = ctypes.create_string_buffer(100) #must be large enough!!
msvcrt.sprintf(s, b'%s', b'Hello World!')
val = s.value
Я не знаю, почему вы хотите это сделать, поскольку в Python есть собственное форматирование строк. sprintf
- опасный метод, поскольку он подвержен переполнению буфера.