iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C\C++如何实现读写二进制文件
  • 283
分享到

C\C++如何实现读写二进制文件

2023-07-05 19:07:27 283人浏览 薄情痞子
摘要

这篇文章主要介绍“C\c++如何实现读写二进制文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C\C++如何实现读写二进制文件”文章能帮助大家解决问题。读写二进制文件打开文件fopen() 函数用

这篇文章主要介绍“C\c++如何实现读写二进制文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C\C++如何实现读写二进制文件”文章能帮助大家解决问题。

读写二进制文件

打开文件

fopen() 函数用来创建一个新文件或者打开一个已有的文件,该函数返回一个 FILE 对象的指针,函数原型:

#include <stdio.h>FILE *fopen(const char *pathname, const char *mode);

pathname 是指向文件路径的字符串指针,mode 访问模式包括以下几种:

ModeDescription
r以读方式打开文件
w以写方式打开文件,如果文件不存在将创建一个新文件,如果文件已经存在则截断为零长度,重新写入
a以追加方式打开文件(在文件尾部写入),如果文件不存在将创建一个新文件
r+以读写方式打开文件
w+以读写方式打开文件,如果文件不存在将创建一个新文件,否则截断为零长度
a+以读与追加方式打开文件,如果文件不存在将创建一个新文件,输出总是添加到文件尾部

访问模式字符串还可以包含字母 “b” 作为最后一个字符或上述两个字符字符串中任何一个字符之间的字符。这完全是为了兼容 C89;在所有符合 POSIX 的系统上忽略 “b” 字符,包括 linux。(其他系统可能会以不同的方式处理文本文件和二进制文件,如果您对二进制文件进行 I/O 操作,并且希望您的程序可以移植到非UNIX环境,则添加“b”可能是一个好主意。)

二进制 I/O 函数

读取函数

#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

从给定流 stream 读取数据到 ptr 所指向的数组中。

  • ptr &ndash; 指向带有最小尺寸 size*nmemb 字节的内存块的指针。

  • size &ndash; 读取的每个元素的大小,以字节为单位。

  • nmemb &ndash; 元素的个数,每个元素的大小为 size 字节。

  • stream &ndash; 指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。

当执行成功时,fread() 返回读取到的数据大小,该大小仅当 size 为 1 时等于传输的字节数。如果发生错误,或到达文件结尾时,返回值为短计数(或零)。

fread() 不区分文件结尾和错误,调用者必须使用 feof() 和 ferror() 来确定发生了什么。

示例代码:

#include <stdio.h>#include <stdint.h>     // included for uint8_tint main(int arGC, char const *argv[]) {    uint8_t buf[4096] = {0x00};    FILE *fp = fopen("/usr/bin/prince", "r");    size_t size = fread(buf, sizeof(uint8_t), sizeof(buf), fp);    fclose(fp);    return 0;}

检查文件结尾 (end-of-file)

#include <stdio.h>int feof(FILE *stream);

函数 feof() 测试指向流的文件结束指示符(end-of-file indicator),如果设置了,则返回非零值。文件指示符只能通过函数 clearerr() 清除。

通俗地理解,就是在二进制文件读取过程中,通过 feof() 判断是否已经到达文件结尾。所以上面示例的完整版将类似这样:

#include <stdio.h>#include <stdint.h>     // included for uint8_tstatic void print_data(const uint8_t *data, size_t len) {    for (size_t i = 0; i < len; ++i) {        if (i != 0 && i % 16 == 0) printf("\n");        printf("%02x ", data[i]);    }    printf("\n");}int main(int argc, char const *argv[]){    uint8_t buf[4096] = {0x00};    size_t size = 0;    FILE *fp = fopen("/usr/bin/xxd", "r");    if (fp == NULL) return 1;    while (!feof(fp)) {        size = fread(buf, sizeof(uint8_t), sizeof(buf), fp);        print_data(buf, size);        // do something...    }    fclose(fp);    return 0;}

写入函数

#include <stdio.h>size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

把 ptr 所指向的数组中的数据写入给定的 stream 流中。

  • ptr &ndash; 指向需要写入到文件中的数组的指针

  • size &ndash; 写入的每个元素的大小,以字节为单位

  • nmemb &ndash; 元素的个数,每个元素的大小为 size 字节

  • stream &ndash; 指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。

当执行成功时,fwrite() 返回写入到文件的数据大小,该大小仅当 size 为 1 时等于传输的字节数。如果发生错误,返回值与 size*nmemb 不相等。

示例代码:

#include <stdio.h>#include <stdint.h>     // included for uint8_tint main(int argc, char const *argv[]) {    uint8_t buf[8] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};    FILE *fp = fopen("/tmp/hello.bin", "w");    size_t size = fwrite(buf, sizeof(uint8_t), sizeof(buf), fp);    fclose(fp);    return 0;}

关于“C\C++如何实现读写二进制文件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: C\C++如何实现读写二进制文件

本文链接: https://www.lsjlt.com/news/354613.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C\C++如何实现读写二进制文件
    这篇文章主要介绍“C\C++如何实现读写二进制文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C\C++如何实现读写二进制文件”文章能帮助大家解决问题。读写二进制文件打开文件fopen() 函数用...
    99+
    2023-07-05
  • C# BinaryReader实现读取二进制文件
    在 C# 以二进制形式读取数据时使用的是 BinaryReader 类。 BinaryReader 类中提供的构造方法有 3 种,具体的语法形式如下。 第1种形式: Binar...
    99+
    2022-11-12
  • C#中如何读取二进制文件
    C#中如何读取二进制文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#读取二进制文件当想到所有文件都转换为 XML时,确实是一件好事。但是,这并非事实。仍旧...
    99+
    2023-06-18
  • C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter
    一、二进制读写类: 1、BinaryReader/BinaryWriter:二进制读写 BinaryReader:用特定的编码将基元数据类型读作二进制值。BinaryWriter:以...
    99+
    2022-11-13
  • C++读写(CSV,Yaml,二进制)文件的方法详解
    目录介绍1.读写txt文件2.C++读写CSV文件2.1 写入CSV2.2 读取CSV文件(1)2.3 读取CSV文件(2)2.4 用c++读写二进制文件(1)2.5 用c++读写二...
    99+
    2022-11-13
  • C++ 二进制文件读写方式及示例详解
    目录C++ 二进制文件读写一、二进制文件的读写方式二、C++二进制文件读写示例写入二进制文件:读取二进制文件:总结:C++ 二进制文件读写 C++语言提供了使用二进制文件进行数据处理...
    99+
    2023-05-17
    C++ 二进制文件读写 C++ 文件读写
  • Python读写二进制文件的实现
    目录1. 简介2. struct模块介绍3. struct模块中数据格式fmt对应C/C++和Python中的类型4. 实例5. Python 字符串前面加u,r,b,f的含义5.1...
    99+
    2023-05-15
    Python读写二进制文件 Python二进制文件读写
  • C#如何实现读写CSV文件
    这篇文章主要介绍“C#如何实现读写CSV文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现读写CSV文件”文章能帮助大家解决问题。CSV文件标准在介绍CSV文件的读写方法前,我们需要了解...
    99+
    2023-07-02
  • C# CSV文件读写如何实现
    这篇文章主要介绍了C# CSV文件读写如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C# CSV文件读写如何实现文章都会有所收获,下面我们一起来看看吧。CSV是一种通用的、相对简单的...
    99+
    2023-07-05
  • C/C++中二进制文件&顺序读写详解及其作用介绍
    目录概述二进制 vs ASCII二进制写入ASCII 写入read 和 write 读写二进制文件案例一案例二概述 二进制文件不同于文本文件, 它可以用于任何类型的文件 (包括文本文...
    99+
    2022-11-12
  • C#CSV文件读写的实现
    目录为什么要用csv文件一、DataTable数据写入CSV文件二、读取CSV文件到DataTable三、修改文件名称四、CSV文件的数据写入CSV是一种通用的、相对简单的文件格式,...
    99+
    2023-03-03
    C# CSV文件读写 C# CSV 读写
  • python 二进制文件的读写
    对于二进制代码的读取: import struct with open('valid0_0','rb') as f:#valid0_0二进制文件名 f.seek(0,2) n=f.tell() f.seek...
    99+
    2023-01-31
    二进制文件 python
  • 3-6 读写二进制文件
    3-4  读写二进制文件 u本节学习目标: n了解二进制文件读取器/编写器 n学习建立BinaryReader类的一些主要方法 n学习建立BinaryWriter类的一些主要方法 n学习通过...
    99+
    2023-01-31
    二进制文件
  • 详解C#如何实现读写ini文件
    目录介绍1.创建一个ini文件2.创建一个winform界面3.添加一个ini管理类4.添加winform代码介绍 INI文件格式由节、键、值组成。 节 [section] 参数 (...
    99+
    2022-11-13
  • C++用read()和write()读写二进制文件的超详细教程
    目录前言C++ ostream::write()方法写文件C++ istream::read()方法读文件总结前言 通过前一节的学习,读者了解了以文本形式读写文件和以二进制形式读写文...
    99+
    2022-11-13
  • 如何在 Python 中读写二进制文件?
    在 Python 中,读写二进制文件是一项基本的任务。二进制文件通常包含非文本数据,例如图像、音频、视频等。 本文将向您介绍如何在 Python 中读写二进制文件。 什么是二进制文件? 在计算机中,所有数据都以二进制形式存储。二进制文件是一...
    99+
    2023-10-01
    文件 numpy javascript
  • C#实现读取写入Json文件
    目录C#读取写入Json文件将数据写入Json文件中Json文件读取Json文件总结C#读取写入Json文件 /// <summary> /// 将序列化...
    99+
    2023-01-28
    C#读取写入Json C#读取Json文件 C#写入Json文件
  • C#怎么实现读写ini文件
    这篇文章主要介绍了C#怎么实现读写ini文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.创建一个C#项目2.创建一个ini文件在Debug目录下创建一个ini文件,写入...
    99+
    2023-06-28
  • R语言实现二进制文件读写操作
    二进制文件是一个文件,其中包含仅以位和字节形式存储的信息(0和1),它们是不可读的,因为其中的字节转换为包含许多其他不可打印字符的字符和符号,随便我们尝试使用任何文本编辑器读取二进制...
    99+
    2022-11-11
  • C语言如何实现随机读写文件
    这篇文章主要讲解了“C语言如何实现随机读写文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言如何实现随机读写文件”吧!1.fseek前面已经剧透过了,fseek可以改变记录读写位置的指...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作