Odd. I get 22 when running from IDLE.
Also, when using the console, it actually prints the text. I suspect that
stdout gets block-buffered when using an IDE. I can't see any way to get a
reference to stdout, so you can't fflush() it.
Launch IDLE from the command line and you'll see the text output.
To the OP: I bet your Eclipse runs Python 2.x and IDLE is 3.x.
In Python 3.x, "Test..." is a Unicode string, internally represented
using two bytes per character. (In contrast, in Python 2.x, "Test..."
is a byte string, and u"Test..." is unicode). All ASCII characters
have a 0 as their second byte in its internal representation. printf
expects a byte string, and stops as soon as it sees the '\0' following
the 'T' in 'Testing'. Either use wprintf("Testing..."), or encode the
Unicode object into a byte string before calling:
printf("Testing...".encode(sys.stdout.encoding)), or tell ctypes about
the right parameter type:
printf = msvcrt.printf
printf.argtypes = [c_char_p]
printf("Testing\n")