【问题标题】:How printf() function in c actually works? [closed]c 中的 printf() 函数实际上是如何工作的? [关闭]
【发布时间】:2019-01-30 15:09:58
【问题描述】:

我们都知道printf()是的一个函数。 我想知道当我们输入 printf("something"); 时引擎盖下发生了什么。它会显示在屏幕上...它是如何显示在屏幕上的,printf() 函数中的代码是什么,它通过它在屏幕上显示某些内容?提前谢谢

【问题讨论】:

  • printf 的开源实现有很多,有源码供大家学习。但是,如果您想知道从调用printf 到屏幕上显示的输出的完整路径,这是一项艰巨的任务,它将教您编译器(为调用生成代码)到操作系统再到设备驱动程序到硬件并通过堆栈备份,直到输出结束在终端窗口中。
  • 您似乎正在寻找有关使printf 工作的整个事件链的一般信息。 Here 是我六年前对此的回答。
  • 这应该被标记为What goes behind printf in C的副本,而不是Code for printf function in C,这将是一个比太宽泛更好的分辨率。所以我投票重新开放,然后将投票关闭作为重复。
  • printf 中的 Nothing 本身会在屏幕上显示任何内容,实际上,printf 调用并不总是有这样的结果。它们只是将格式化的输出发送到标准输出流。如果恰好连接到终端驱动程序,则该驱动程序会显示输出(在屏幕上)。如果它连接到某种其他类型的设备,那么它会针对该设备进行适当的处​​理——可能是写入文件中,或者通过网络发送,或者存储在内存中,或者分派给另一个程序,或者 ....

标签: c


【解决方案1】:

printf("something"); 等同于fprintf(stdout, "something");,因此它会在标准输出上打印,无论最终输出将在哪里完成(屏幕、文件、管道……)

因为“某事”不满足特殊格式(使用 %)如果打印不变,您的问题可能转为 putchar() / fputc() 的工作原理

printf 不知道屏幕 / 文件 / 管道 / ... 是什么,就像 scanf 不知道键盘是什么一样,这不是他们的责任

【讨论】:

  • 先生,实际上计算机是如何在屏幕上显示它的......它里面有没有任何代码可以在屏幕上显示它?我们只是输入 printf("hello world") 它就在屏幕上。 .but 它在屏幕上的表现如何 我们可以创建自己的 printf() 函数吗?
  • @DebdutBhaduri 如果您重定向输出,您将不会在屏幕上看到结果;-) 您的操作系统是什么?您是如何在 shell 中启动程序的?
  • 先生真的不明白,假设我们编写了一个程序来打印我们编写的 hello world。 Printf("hello world") 我们在屏幕上得到了 hello world...那么引擎盖下到底发生了什么..这个函数如何在屏幕上显示 hello world
  • 我的操作系统是windows
  • @DebdutBhaduri printf 不关心输出将在哪里产生,这不是它的工作,就像 getchar 不管理键盘。一切都在 I/O 管理上完成
猜你喜欢
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2017-09-15
  • 2013-09-19
  • 1970-01-01
  • 2021-12-09
  • 2014-03-11
  • 1970-01-01
相关资源
最近更新 更多