C++/C按照时间命名保存bin文件

背景

在Linux应用编程过程中,使用C++或者C语言保存、读取bin文件是比较常见的需求。这里详细记录一下使用C++保存bin文件,也可以使用C语言实现。

代码

C++/C语言保存bin文件函数,C++中也能使用

正确写入返回0,错误返回-1

// C 保存bin文件
int writeBin(char *path, unsigned char *buf, int size)
{
    FILE *outfile;

    if ((outfile = fopen(path, "wb")) == NULL)
    {
        printf("\nCan not open the path: %s \n", path);
        return -1;
    }
    fwrite(buf, sizeof(unsigned char), size, outfile);
    fclose(outfile);
    return 0;
}

针对文件路径的制作,文件露营时一个与时间有关的字符串

首先获取当前时间,然后根据需要的命名格式,完善saveFilePath

writeBin函数调用,将randomif_buf数据存储到本地文件

time_t timep;
time (&timep);
char saveFilePath[128];
memset(saveFilePath, 0, sizeof(saveFilePath));
strftime(saveFilePath, sizeof(saveFilePath), "./%Y-%m-%d_%H_%M_%S_usb.bin",localtime(&timep));

writeBin(saveFilePath, randomif_buf, sizeof(randomif_buf));

这里需要包含的头文件如下:

#include <string>
#include <time.h>
#include <iostream>

针对bin文件的读取,可以采用如下函数实现,读取正确返回0,读取错误返回-1

int readBin(char *path, char *buf, int size)
{
    FILE *infile;

    if ((infile = fopen(path, "rb")) == NULL)
    {
        printf("\nCan not open the path: %s \n", path);
        return -1;
    }
    fread(buf, sizeof(char), size, infile);
    fclose(infile);
    return 0;
}

实际使用过程中存储的bin文件如下图所示

明显可以看出来文件的命名格式时正确的,是上述我们代码的实现方式。

bin文件使用vscode查看,需要安装一个bin文件的插件

Binary Viewer

如下图 所示搜索,该插件,安装即可 

具体使用如下图所示

选中需要查看的bin文件,右击选择16进制查看的方式,所有的数据都可以显示出来,还是比较方便,尤其是在ubuntu中。window中很多工具可以查看bin文件,ubuntu这也是个好方式。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/27207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core Web API入门:创建新项目

ASP.NET Core Web API入门&#xff1a;创建新项目 一、引言二、创建新项目三、加入Startup类&#xff0c;并替换Program.cs内容四、编辑Program.cs代码五、修改控制器的路由六、运行项目 一、引言 最近闲着&#xff0c;想着没真正从0-1开发过ASP.NET Core Web API的项目&#…

找不到xinput1_3.dll怎么办?xinput1_3.dll丢失的四个修复方法

在我们打开游戏的或者软件的时候&#xff0c;电脑提示“找不到xinput1_3.dll&#xff0c;无法继续执行此代码”怎么办&#xff1f;相信困扰着不少小伙伴&#xff0c;我再在打开吃鸡的时候&#xff0c;然后花了一上午的时候时间研究&#xff0c;现在终于知道xinput1_3.dll文件是…

中国电子学会2023年05月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)

2023-05 Scratch三级真题 分数&#xff1a;100 题数&#xff1a;38 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1. 关于变量&#xff0c;下列描述错误的是&#xff1f;&#xff08;A &#xff09;&#xff08;2分&#xff09; A.只能建一个变量 …

Visual Studio 2022 v17.6 正式发布

Visual Studio 17.6 正式发布&#xff0c;这个最新版本提供了一系列强大的工具和功能&#xff0c;旨在使你能够制作出最先进的应用程序。 提高生产力 通过 Visual Studio 2022&#xff0c;目标是帮助你在更短的时间内完成 IDE 内的所有开发任务&#xff0c;在这个版本中&…

OpenPCDet安装、使用方式及自定义数据集训练

OpenPCDet安装、使用方式及自定义数据集训练 个人博客 OpenPCDet安装 # 先根据自己的cuda版本&#xff0c;安装对应的spconv pip install spconv-cu113# 下载OpenPCDet并安装 git clone https://github.com/open-mmlab/OpenPCDet.git cd OpenPCDet pip install -r requireme…

Linux 负载均衡集群 LVS_NAT模式 LVS_DR模式

集群 由多台主机组成&#xff0c;只做一件事&#xff0c;对外表现为一个整体。 只干一件事 &#xff1a;集群 干不同的事&#xff1a;分布式 企业集群分类 负载均衡群集&#xff08;load balance cluster&#xff09; 提高系统响应效率&#xff0c;处理更多的访问请…

深度学习的低秩优化:在紧凑架构和快速训练之间取得平衡(上)

论文出处&#xff1a;[2303.13635] Low Rank Optimization for Efficient Deep Learning: Making A Balance between Compact Architecture and Fast Training (arxiv.org) 由于篇幅有限&#xff0c;本篇博客仅引出问题的背景、各种张量分解方法及其分解FC/Conv层的方法&#x…

车牌识别之UI(Tkinter + OpenCV显示Picture和Video)

画一张总图&#xff1a; 图形界面开发 本篇只介绍图形界面开发。 遇到的第一个问题就是选择什么开发语言和技术。因为我之前用Python做过Tkinter的小东西&#xff0c;所以这次还是用Python Tkinter OpenCV来搞吧。 这里面需要注意几个地方&#xff1a; 1. Tkinter 的布局 …

冒泡排序、插入排序、希尔排序、选择排序

一、排序协议的定义 在博客的开头的&#xff0c;我们先给出排序协议的定义。因为我们本篇博客含有多种排序方式&#xff0c;为了使每种排序方法对外调用方式一致&#xff0c;我们需要定义一个排序的相关协议。所有排序的相关类都必须遵循该协议&#xff0c;让此协议来定义具体…

快速实现一个分布式定时器

定时器&#xff08;Timer&#xff09;是一种在业务开发中常用的组件&#xff0c;主要用在执行延时通知任务上。本文以笔者在工作中的实践作为基础&#xff0c;介绍如何使用平时部门最常用的组件快速实现一个业务常用的分布式定时器服务。同时介绍了过程中遇到问题的一些解决方案…

Android AIDL的使用(配源码)

零、完整源代码 链接: https://github.com/jx0260/TestGradle 一、创建AIDL文件 // IShopAidlInterface.aidl package com.example.testgradle;// Declare any non-default types here with import statementsinterface IShopAidlInterface {String getProductInfo(int prod…

【2023最新教程】一文3000字从0到1教你做app自动化测试(保姆级教程)

一、什么是App自动化&#xff1f;为什么要做App自动化&#xff1f; App自动化是指给 Android或iOS上的软件应用程序做的自动化测试。手工测试和自动化测试的对比如下&#xff1a; 手工测试优势&#xff1a;不可替代、发现更多bug、包含了人的想象力与理解力。 注意&#xff0c…

迅为iTOP-RK3588开发板Android12源码定制开发kernel开发

内核版本是 5.10.66 版本&#xff0c;内核默认的配置文件是 3588-android12/kernel-5.10/arch/arm64/configs/rockchip_defconfig 如果我们要使用图形化界面配置内核&#xff0c;操作方法如下所示&#xff1a; 方法一&#xff1a; 1 首先将默认的配置文件 rockchip_defconf…

博客系统测试用例设计之自动化测试

测试用例设计之自动化测试 &#x1f337; 一 测试用例设计&#x1f33a; 1 功能测试&#x1f338; &#xff08;1&#xff09;登录功能&#x1f338; &#xff08;2&#xff09;列表页功能&#x1f338; &#xff08;3&#xff09;编辑博客功能&#x1f338; &#xff08;4&…

DC LAB8SDC约束四种时序路径分析

DC LAB 1.启动DC2.读入设计3. 查看所有违例的约束报告3.1 report_constraint -all_violators (alias rc)3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告) 4.查看时序报告 report_timing -significant_digits 45. 约束组合逻辑(adr_i…

17 条件随机场

文章目录 17 条件随机场——CRF&#xff08;Condition Random Field&#xff09;17.1 背景介绍17.2 HMM与MEMM的区别17.3 MEMM与CRF的区别17.4 CRF模型17.4.1 CRF的概率密度函数17.4.2 CRF概率密度函数简化&#xff08;向量形式&#xff09; 17.5 CRF需要解决的问题17.6 边缘概…

测试者必知—如何做Web测试?常见测试点总结

目录 前言&#xff1a; 一、Web应用程序 二、功能测试 三、易用性测试&#xff08;界面测试&#xff09; 四、兼容性测试 五、安全性测试 六、性能测试 前言&#xff1a; Web测试是指对基于Web技术的应用程序进行测试&#xff0c;以测试其功能、性能、安全和稳定性等方面的表…

【图书推荐 | 12】前端系列

【赠书活动第十二期 】 图书推荐 本期书籍&#xff1a;前端系列 图书列表&#xff1a; Vue.js核心技术解析Nuxt.js实战Nuxt.js Web开发实战HTML5CSS 从入门到精通Flutter2 开发实例精解Electron项目开发实战 Vue.js核心技术解析 Nuxt.js实战 Nuxt.js Web开发实战 HTML5CSS 从入…

【业务功能篇20】Springboot java逻辑实现动态行转列需求

在此前&#xff0c;我也写过一个行转列的文章&#xff0c;是用存储过程sql处理的一个动态的逻辑 Mysql 存储过程\Mybatis框架call调用 实现动态行转列 那么后面我们同样又接收了业务的一个新需求&#xff0c;针对的是不同的业务数据&#xff0c;做的同样的一个展示数据报表&…

VueX使用简明笔记

1、作用&#xff1a; vuex是使用vue中必不可少的一部分&#xff0c;基于父子、兄弟组件&#xff0c;我们传值可能会很方便&#xff0c;但是如果是没有关联的组件之间要使用同一组数据&#xff0c;就显得很无能为力&#xff0c;那么vuex就很好的解决了我们这种问题&#xff0c;…