您当前的位置:首页 > IT编程 > C语言
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:C 库函数 - setvbuf()

51自学网 2023-01-07 20:29:54
  C语言
这篇教程C 库函数 - setvbuf()写得很实用,希望能帮到您。

描述

C 库函数 int setvbuf(FILE *stream, char *buffer, int mode, size_t size) 定义流 stream 应如何缓冲。

声明

下面是 setvbuf() 函数的声明。

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

参数

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了一个打开的流。
  • buffer -- 这是分配给用户的缓冲。如果设置为 NULL,该函数会自动分配一个指定大小的缓冲。
  • mode -- 这指定了文件缓冲的模式:
模式描述
_IOFBF全缓冲:对于输出,数据在缓冲填满时被一次性写入。对于输入,缓冲会在请求输入且缓冲为空时被填充。
_IOLBF行缓冲:对于输出,数据在遇到换行符或者在缓冲填满时被写入,具体视情况而定。对于输入,缓冲会在请求输入且缓冲为空时被填充,直到遇到下一个换行符。
_IONBF无缓冲:不使用缓冲。每个 I/O 操作都被即时写入。buffer 和 size 参数被忽略。
  • size --这是缓冲的大小,以字节为单位。

返回值

如果成功,则该函数返回 0,否则返回非零值。

实例

下面的实例演示了 setvbuf() 函数的用法。

#include <stdio.h>int main(){   char buff[1024];   memset( buff, '/0', sizeof( buff ));   fprintf(stdout, "启用全缓冲/n");   setvbuf(stdout, buff, _IOFBF, 1024);   fprintf(stdout, "这里是 codercto.com/n");   fprintf(stdout, "该输出将保存到 buff/n");   fflush( stdout );   fprintf(stdout, "这将在编程时出现/n");   fprintf(stdout, "最后休眠五秒钟/n");   sleep(5);   return(0);}

让我们编译并运行上面的程序,这将产生以下结果。在这里,程序把缓冲输出保存到 buff,直到首次调用 fflush() 为止,然后开始缓冲输出,最后休眠 5 秒钟。它会在程序结束之前,发送剩余的输出到 STDOUT。

启用全缓冲这里是 codercto.com该输出将保存到 buff这将在编程时出现最后休眠五秒钟

C 库函数 - setbuf()
C 库函数 - tmpfile()
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1