C语言中printf函数的代码

C语言中printf函数的代码,c,printf,stdio,C,Printf,Stdio,可能重复: 我想知道在哪里可以找到使用的C代码,这样当我编写printf(“helloworld!”)时;在我的C程序中,我想知道它必须将该字符串打印到标准输出。我查看了一下,但在那里我只能找到它的原型int-printf(const-char*format,…),但找不到它内部的样子。。。您可以看到它通过stdout传递到vfprintf: __printf (const char *format, ...) { va_list arg; int done; va_sta

可能重复:


我想知道在哪里可以找到使用的C代码,这样当我编写printf(“helloworld!”)时;在我的C程序中,我想知道它必须将该字符串打印到标准输出。我查看了一下,但在那里我只能找到它的原型int-printf(const-char*format,…),但找不到它内部的样子。。。您可以看到它通过
stdout
传递到
vfprintf

__printf (const char *format, ...)
{
   va_list arg;
   int done;

   va_start (arg, format);
   done = vfprintf (stdout, format, arg);
   va_end (arg);

   return done;
}

下面是对vfprintf的
vfprintf
。。。所有的格式化“魔法”都发生在这里


这些函数唯一真正“不同”的地方是,它们使用varargs获取可变长度参数列表中的参数。除此之外,它们只是传统的C(这与Pascal的
printf
等价物形成对比,后者在编译器中实现了特定的支持…至少在当时是这样。)

我认为没有可用的源代码+1不管怎样,我一直想知道这个。related-&
printf
是根据
putc
定义的,所以它不需要进行任何操作系统调用。@Tergiver,@R:你们都是对的
printf
处理格式化,然后调用
putc
,这可能会调用其他helper函数,但最终会导致操作系统调用。我的观点是,操作系统调用的级别要低得多,
printf
本质上是一个在较低级别stdio调用之上的纯库函数。此文件位于我的linux系统下的何处。我用的是RHEL。谢谢@Jerry其目标代码在您的libc中。下载源代码的glibc源代码。最著名的库函数之一,其中包含什么?一群转到的人和“这是一个黑客!!!”;)