我对' \ n'的作用感到困惑。在fprintf。据我所知,它将字符复制到一个数组中,\ n字符表示何时停止读取当前缓冲区中的字符。但是,它什么时候才能使系统调用写入。
例如,fprintf(stdout," hello")打印但我从未给过\ n字符,所以它如何知道进行系统调用。
答案 0 :(得分:5)
在同步/刷新通道时进行系统调用。这可以是当缓冲区已满(尝试写一个没有\n
的LOT并且你会在某个时候看到输出),当看到\n
时(如果你为通道配置了行缓冲) ,这是tty设备的默认设置),或者当调用fflush()
时。
当路径关闭时,它也会被刷新。当进程终止时,操作系统将关闭它拥有的任何打开路径。这些事件中的每一个都将导致系统调用以发出输出。
答案 1 :(得分:0)
首先,fprintf("hello");
不正确,应该是fprintf(stdout, "hello");
。接下来,\ n并不意味着停止读取或写入字符,因为\ n本身就是一个字符,换行符(10th in ascii table)。
答案 2 :(得分:0)
关于\n
的目的和用途的假设 是错误的。 \n
只是255个 read 的ASCII字符之一,即它们不是命令或指令,导致任何事情发生,它们只是被动字符当在各种C函数中使用时(例如,sprintf(),printf(),fprintf()等)被解释为使得输出的呈现被操纵以以期望的方式出现。
顺便说一下 ,\n
(新行)与许多其他格式代码完美结合,您可以看到 HERE 强>