fwrite函数

1、函数声明

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

2、参数说明

  • buffer
    指向要写入的数据的指针。

  • size
    项大小(以字节为单位)。

  • count
    要写入的项的最大数量。

  • stream
    指向 FILE 结构的指针。

3、返回值

        fwrite 返回实际写入的整个项的数量,如果发生错误,则该数量可能会小于 count。 此外,如果发生错误,则无法确定文件位置指示器。 如果 stream 或 buffer 是空指针,或者如果在 Unicode 模式下指定了要写入的奇数个字节,则该函数将调用的参数处理程序无效,如参数验证中所述。 如果允许执行继续,则该函数将 errno 设置为 EINVAL 并返回 0。

4、备注

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

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

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

5、头文件要求

函数

必需的标头

fwrite

<stdio.h>

6、实例

// crt_fread.c
// This program opens a file named FREAD.OUT and
// writes 25 characters to the file. It then tries to open
// FREAD.OUT and read in 25 characters. If the attempt succeeds,
// the program displays the number of actual items read.

#include <stdio.h>

int main(void)
{
    FILE* stream;
    char list[30];
    int  i, numread, numwritten;

    // Open file in text mode:
    if (fopen_s(&stream, "fread_test.txt", "w+t") == 0)
    {
        for (i = 0; i < 25; i++)
            list[i] = (char)('z' - i);
       // list[i] = (char)(  i);
        // Write 25 characters to stream 
        numwritten = fwrite(list, sizeof(char), 25, stream);
        printf("Wrote %d items\n", numwritten);
        fclose(stream);

    }
    else
        printf("Problem opening the file\n");

    if (fopen_s(&stream, "fread.out", "r+t") == 0)
    {
        // Attempt to read in 25 characters 
        numread = fread(list, sizeof(char), 25, stream);
        printf("Number of items read = %d\n", numread);
        printf("Contents of buffer = %.25s\n", list);
        fclose(stream);
    }
    else
        printf("File could not be opened\n");
}

运行结果:在fread_test.txt文件中写入如下数据


 

 如果写入的数量超过sizeof(buffer),将会向文件中写入乱码,示例如下:

 numwritten = fwrite(list, sizeof(char), 80, stream);

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值