'\ n'在fprintf C中的作用是什么?

时间:2014-03-19 16:40:53

标签: c io printf

我对' \ n'的作用感到困惑。在fprintf。据我所知,它将字符复制到一个数组中,\ n字符表示何时停止读取当前缓冲区中的字符。但是,它什么时候才能使系统调用写入。

例如,fprintf(stdout," hello")打印但我从未给过\ n字符,所以它如何知道进行系统调用。

3 个答案:

答案 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