X64站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2450|回复: 33

setvbuf 函数文档

  [复制链接]
  • TA的每日心情
    擦汗
    2023-12-22 12:28
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    122

    主题

    257

    帖子

    6902

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    6902

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2023-12-8 14:34:40 | 显示全部楼层 |阅读模式
    setvbuf 函数文档


    函数概要:

    setvbuf 函数用于指定一个数据流的缓存模式。

    对于数据流,有三种缓存模式:不缓存,按块缓存和按行缓存。如果输出流设置为不缓存,数据会直接写入目标文件或打印到屏幕上;如果设置为按块缓存,那么数据会先写入到缓存块中;如果设置为按行缓存,那么在接收到换行符('\n')之前,数据都是先缓存在缓冲区的。

    fflush 函数可以强制刷新缓冲区。


    函数原型:

    • #include <stdio.h>
    • ...
    • int setvbuf(FILE *stream, char *buf, int mode, size_t size);

    [color=rgb(51, 102, 153) !important]复制代码



    参数解析:

    参数
    含义
    stream该参数是一个 FILE 对象的指针,指定一个打开的数据流
    buf1. 指定一个用户分配的缓冲区

    2. 如果该参数为 NULL,那么函数会自动分配一个指定尺寸的缓冲区
    mode指定数据流的缓存模式:
    模式
    描述
    _IOFBF按块缓存
    _IOLBF按行缓存
    _IONBF不缓存
    size指定缓冲区的尺寸(字节)


    返回值:

    1. 如果函数调用成功,返回值是 0;

    2. 如果函数调用失败,返回值的是一个非 0 值。


    演示:

    • #include <stdio.h>
    • #include <string.h>
    • int main(void)
    • {
    •         char buff[1024];
    •         memset(buff, '\0', sizeof(buff));
    •         // 指定 buff 为缓冲区,_IOFBF 表示当缓冲区已满时才写入 stdout
    •         setvbuf(stdout, buff, _IOFBF, 1024);
    •         fprintf(stdout, "This is bbs.fishc.com\n");
    •         fprintf(stdout, "This output will go into buff\n");
    •         // fflush强制将上面缓存中的内容写入stdout
    •         fflush(stdout);
    •         fprintf(stdout, "this will appear when progream\n");
    •         fprintf(stdout, "will come after sleeping 5 seconds\n");
    •         sleep(5);
    •         return 0;
    • }

    [color=rgb(51, 102, 153) !important]复制代码


    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    320

    帖子

    644

    积分

    高级会员

    Rank: 4

    积分
    644
    发表于 2023-12-22 12:53:00 | 显示全部楼层
    学习学习,保存一下
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    298

    帖子

    592

    积分

    高级会员

    Rank: 4

    积分
    592
    发表于 2023-12-25 06:25:57 | 显示全部楼层
    感谢热心楼主。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    96

    帖子

    202

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    202
    发表于 2023-12-25 16:48:40 | 显示全部楼层
    感谢分享,超想学的!!!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    102

    帖子

    213

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    213
    发表于 2023-12-26 04:26:07 | 显示全部楼层
    thans you
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    80

    帖子

    169

    积分

    注册会员

    Rank: 2

    积分
    169
    发表于 2023-12-28 19:07:47 | 显示全部楼层
    终于找到了 谢谢
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    320

    帖子

    644

    积分

    高级会员

    Rank: 4

    积分
    644
    发表于 2023-12-29 12:35:44 | 显示全部楼层
    楼主威武,抱走包走!!!!!!!!!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    318

    帖子

    633

    积分

    高级会员

    Rank: 4

    积分
    633
    发表于 2023-12-30 04:11:48 | 显示全部楼层
    多谢大神分享
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    106

    帖子

    222

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    222
    发表于 2023-12-30 08:29:13 | 显示全部楼层
    感谢楼主分享!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    354

    帖子

    702

    积分

    高级会员

    Rank: 4

    积分
    702
    发表于 2023-12-31 06:52:02 | 显示全部楼层
    学习一下
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表