C FPUT和fflush、写入和缓冲过程
我对C语言中的写入过程感到困惑,所以我有一个字符串s,我想写入输出。为此,我使用FPUT:C FPUT和fflush、写入和缓冲过程,c,buffer,stdio,C,Buffer,Stdio,我对C语言中的写入过程感到困惑,所以我有一个字符串s,我想写入输出。为此,我使用FPUT: fputs(s, stdout); 但显然,这并没有写入输出,而只是收集用于写入的数据?具体在哪里收集?所以我必须等到程序退出或者调用fflush()直到输出被写入标准输出?我说得对吗?C标准IO流以三种模式之一运行: 完全缓冲 行缓冲 无缓冲 您可以使用该功能设置模式。这一切都发生在标准IO实现的深处。如果希望数据立即显示,请使用无缓冲模式 引用C99 7.19.3#3: 当流未缓冲时,字符将从 尽快
fputs(s, stdout);
但显然,这并没有写入输出,而只是收集用于写入的数据?具体在哪里收集?所以我必须等到程序退出或者调用fflush()直到输出被写入标准输出?我说得对吗?C标准IO流以三种模式之一运行:
setbuf
和setvbuf
功能受到影响
有时输出直到行尾
\n
被写入后才会刷新。@PauloBu这对于printf是正确的,而不是fputs。@Zaffy点,我认为它可能类似。@Zaffy不,缓冲模式是流的属性,而不是写入流的函数的属性。数据有点“收集”通过stdout,它是一种文件类型,封装了许多内部簿记内容。使用调试器逐步执行fputs,您将看到它是如何工作的。但这可能相当困难。