printf
返回1,而不是“ Hello World!”。这是理想的结果。
我用谷歌搜索,并认为是由于顺序处理方式的改变。
如何修改代码以打印“ Hello World!”?
www.mail-archive.com/[email protected]/msg15119.html
import ctypes
msvcrt=ctypes.cdll.msvcrt
string=b"Hello World!"
msvcrt.printf("%s", string)
最佳答案
第一个参数也必须是字节字符串:
msvcrt.printf(b"%s", string)
printf的返回值是打印的字符数,在这种情况下应为12。
编辑:
如果要返回而不是打印字符串,则可以使用
sprintf
。这很危险,不建议这样做。s = ctypes.create_string_buffer(100) #must be large enough!!
msvcrt.sprintf(s, b'%s', b'Hello World!')
val = s.value
我不知道您为什么要这么做,因为Python具有自己的字符串格式。
sprintf
是一种危险的方法,因为它容易受到缓冲区溢出的影响。关于python - python3k ctypes printf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2636597/