> Why is the file pointer the last argument?!
That would probably be an optimization. C function calling convention is that arguments are
pushed onto the stack in reverse order, so with this function the FILE pointer is pushed
first. Then the caller is free to manipulate the stack without touching the FILE pointer, and
possibly call these functions multiple times. Otherwise, code that repeatedly gets input
from/outputs to stdout (e.g., *everything*, at least when libc was designed) has to push/pop
the stdout FILE ptr around _every_ call to these functions.
Not that this would ever be noticeable on modern hardware, just saying...