C语言fwrite函数文件操作

C语言二进制文件操作

Posted by JS on June 14, 2023

二进制

二进制文件读写两个重要的函数: fread 和 fwrite , fread 用于读取文件 , fwrite 用于写出文件;

fread / fwrite 函数 既可以操作 二进制文件 , 又可以操作 文本文件;

getc / putc 函数 , fscanf / fprintf 函数 , fgets / fgets 函数 , 只能用于操作 文本文件.

代码链接:https://github.com/Haiezan/Program-learning/tree/master/01fwrite

fwrite 函数

  • 函数原型
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
  • 参数值说明
const void *ptr : 指针指向要写出数据的内存首地址 ;

size_t size : 要写出数据的 基本单元 的字节大小 , 写出单位的大小 ;

size_t nmemb : 要写出数据的 基本单元 的个数 ;

FILE *stream : 打开的文件指针 ;
  • 返回值说明
size_t 返回值返回的是实际写出到文件的基本单元个数 ;

fwrite 示例

  • fwrite 函数示例
// 01fwrite.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

int main()
{
    // 使用 "wb" 二进制写的方式打开文件
    FILE* p = fopen("D:\\a.txt", "wb");

    // 用于写出数据的缓冲区
    char buffer[1024] = { 0 };

    // 设置缓冲区数值
    buffer[0] = 'H';
    buffer[1] = 'e';
    buffer[2] = 'l';
    buffer[3] = 'l';
    buffer[4] = 'o';

    // buffer : 将指针对应的内存的写出到文件中
    // sizeof(char) : 写出的基本单元字节长度
    // sizeof(buffer) : 写出的基本单元个数,
    //       写出字节个数是 sizeof(buffer) * sizeof(char)
    // p : 文件指针
    // 返回值 : fwrite 函数返回值表示写出到的 基本单元 的个数
    size_t count = fwrite(buffer, sizeof(char), 5, p);

    // 打印写出的内容和写出的 基本单元 个数
    printf("fread : buffer = %s , write count = %u\n", buffer, count);

    // 逐个字节打印读取出数据的 ASCII 码
    int i = 0;
    for (i = 0; i < count; i++) {
        printf("buffer[%d] = %x, %c\n", i, buffer[i], buffer[i]);
    }

    printf("Main End\n");
    return 0;
}
  • 执行结果

fread : buffer = Hello , write count = 5 buffer[0] = 48, H buffer[1] = 65, e buffer[2] = 6c, l buffer[3] = 6c, l buffer[4] = 6f, o Main End