当然,实现(printf和所有函数<stdio.h>)是不同的(在Linux和Windows上),但行为应符合C11或C99标准中的规范.
请注意,printf屏幕上不显示字符,而是将它们发送到标准输出(请参阅printf(3)).其他东西 - 例如Linux上的内核tty层和终端仿真器 -正在屏幕上显示字符(或其他地方!).
在Linux和POSIX系统上,<stdio.h>最终使用系统调用将数据写入文件描述符.它将是write(2)(for printf),并且系统调用列表在syscalls(2)中可用.请注意,stdout它通常是缓冲的(特别是出于性能原因; write为每个写入的字节进行系统调用会太昂贵).见fflush(3)和setvbuf(3).尝试在Linux程序中使用strace(1)来理解实际使用的系统调用.
在Windows上,有一些相同的东西(除了Windows上的系统调用列表记录较少并且非常不同).
BTW,GNU/Linux主要是免费软件.所以阅读高级Linux编程然后研究源代码:libc通常是glibc(但可能是musl-libc等等......所以你可以在Linux上有几个实现printf,但通常你有一个 libc.so,即使你可以有几个那些内核源代码可以在kernel.org上找到.