Note that printf prints to the real standard output channel, not to
sys.stdout
, so these examples will only work at the console
prompt, not from within IDLE or PythonWin:
>>> printf = libc.printf >>> printf("Hello, %s\n", "World!") Hello, World! 14 >>> printf("Hello, %S", u"World!") Hello, World! 13 >>> printf("%d bottles of beer\n", 42) 42 bottles of beer 19 >>> printf("%f bottles of beer\n", 42.5) Traceback (most recent call last): File "<stdin>", line 1, in ? ArgumentError: argument 2: exceptions.TypeError: Don't know how to convert parameter 2 >>>
As has been mentioned before, all Python types except integers,
strings, and unicode strings have to be wrapped in their corresponding
ctypes
type, so that they can be converted to the required C data
type:
>>> printf("An int %d, a double %f\n", 1234, c_double(3.14)) Integer 1234, double 3.1400001049 31 >>>
See About this document... for information on suggesting changes.