【io】fwrite和_fwrite_nolock

今天在翻看开发手册时发现了,fwrite的说明,有了一些收获,记录如下:

1、fwrite

1.1 语法

size_t fwrite( const void* buffer, size_t size, size_t count, FILE* stream );

1.2 参数

  • buffer:指向要写入的数据的指针
  • size:项大小(以字节为单位)
  • count:要写入的项的最大数量
  • stream:指向FILE结构的指针

1.3 返回值

fwrite 返回函数写入的完整项数,这可能小于 count 发生错误的情况。 此外,如果发生错误,则无法确定文件位置指示器。 如果任 stream一或 buffer为 null 指针,或者如果要写入的奇数字节数是在 Unicode 模式下指定的,则该函数将调用无效的参数处理程序,如 参数验证中所述。 如果允许执行继续,则该函数将 

errno 设置为 EINVAL 并返回 0。

1.4 注解

fwrite 函数最多将 count 个项从 size 写入到输出 buffer,每个项的长度为 stream。 如果存在一个) 递增的字节fwrite写入数,则与stream (关联的文件指针。 如果在文本模式下打开 stream,则会将每个换行符替换为回车换行符对。 该替换不会影响返回值。

当在 Unicode 转换模式下打开 stream 时(例如,通过调用 stream 并使用包含 fopen、ccs=UNICODE 或 ccs=UTF-16LE 的模式参数打开 ccs=UTF-8 时,或者通过使用 _setmode 和包含 _O_WTEXT、_O_U16TEXT 或 _O_U8TEXT 的模式参数将该模式更改为 Unicode 转换模式时),会将 buffer 解释为指向包含 UTF-16 数据的 wchar_t 数组的指针。 尝试在此模式下写入奇数个字节会导致参数验证错误。

由于此函数锁定调用线程,因此它是线程安全的。 有关非锁定版本,请参阅 _fwrite_nolock。

2、_fwrite_nolock

2.1 语法

size_t _fwrite_nolock( const void* buffer, size_t size, size_t count, FILE* stream );

2.2 参数

  • buffer:指向要写入的数据的指针
  • size:项大小(以字节为单位)
  • count:要写入的项的最大数量
  • stream:指向FILE结构的指针

2.3 返回值

与fwrite相同

2.4 注解

此函数为 fwrite的非锁定版本。 这与除非它不受其他线程的干扰保护,这完全相同 fwrite 。 它可能更快,因为它不会产生锁定其他线程的开销。 仅在线程安全的上下文中使用此函数,如单线程应用程序或调用范围已处理线程隔离的区域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值