为什么要写这样一个函数

在使用SoftConsole开发M3程序时,生成的hex文件,必须要把第一行数据删除,才能在Libero中使用,所以写了这个小工具,这是2.0版本了,第一版是直接删除第一行数据,有可能会导致误操作。

实现原理

主要使用到了bat批处理命令和文件IO操作。

  1. 创建bat批处理文件,内容为dir *.hex /b>hex_file_name.txt
  2. 运行bat命令,这个命令能将当前目录下的hex文件的名称如filename.hex存入到txt文件中
  3. 打开存有hex文件名的txt文件
  4. 读取hex文件
  5. 读取每一个字符,当读取到换行时,即读取到第一行结束,将以后的字符写入到新的hex文件中,直到文件结束
  6. 删除其他的文件,只保留新的hex文件。

运行环境

Code::Blocks 17.12

代码实现:


#include "stdio.h"#include "stdlib.h"#include "unistd.h"#include "string.h"#include "conio.h"#include<windows.h>int main()
{FILE *fin,*fout, *fbat, *fhexname;int c, i=0;char bat_cmd[] = "dir *.hex /b>hex_file_name.txt";char hex_name[50];char cmd_in;printf("\n\n功能:将当前目录下SoftConsole所生成的hex文件删除第一行数据,文件名不限——v1.3\n\n");printf("当前目录下的hex文件是新生成的吗? y/n");while(1){cmd_in = getch();if (cmd_in == 'y'){system("cls");break;}elsereturn 0;}fbat=fopen("get_hex_filename.bat","w");fprintf(fbat, "dir *.hex /b>hex_file_name.txt");    //将bat文件内容写入文件fclose(fbat);system("get_hex_filename.bat");     //运行bat,得到存储hex文件名称的txt文件fhexname = fopen("hex_file_name.txt", "r");     //打开txt文件while (1){hex_name[i++] = fgetc(fhexname);//读取每一个字符if ('\n'==hex_name[i-2])        //读取到第一行换行break;}hex_name[i-2] = '\0';fin=fopen(hex_name,"r");              //读取hex文件fout=fopen("hex_temp.hex","w");       //打开.tmp准备写while (1){c=fgetc(fin);       //读取每一个字符if (EOF==c)         //如果文件结束break;if ('\n'==c)        //如果读取到换行,为第一行break;}if (EOF!=c)             //如果不是文件结束while (1){c=fgetc(fin);if (EOF==c)     //将第一行换行后的字符写入到新文件break;fputc(c,fout);}fclose(fin);     //必须先关闭,否则占用不能删除fclose(fout);fclose(fhexname);remove(hex_name);       //删除源文件remove("get_hex_filename.bat");remove("hex_file_name.txt");rename("hex_temp.hex",hex_name);      //新文件重命名printf("\n\n功能:将当前目录下SoftConsole所生成的hex文件删除第一行数据,文件名不限——v1.3\n\n");printf("\n当前目录下的%s文件的第1行数据已经删除!\n",hex_name);printf("\n注:每执行一次就会删除第1行数据!\n\n");printf("按任意键退出此程序。。。\n");getch();
}

测试文件test.hex


Microsemi SoftConsole delete hex file line 24
Microsemi SoftConsole delete hex file line 25
Microsemi SoftConsole delete hex file line 26
Microsemi SoftConsole delete hex file line 27
Microsemi SoftConsole delete hex file line 28
Microsemi SoftConsole delete hex file line 29
Microsemi SoftConsole delete hex file line 30
Microsemi SoftConsole delete hex file line 31
Microsemi SoftConsole delete hex file line 32
Microsemi SoftConsole delete hex file line 33
Microsemi SoftConsole delete hex file line 34
Microsemi SoftConsole delete hex file line 35
Microsemi SoftConsole delete hex file line 36
Microsemi SoftConsole delete hex file line 37
Microsemi SoftConsole delete hex file line 38
Microsemi SoftConsole delete hex file line 39
Microsemi SoftConsole delete hex file line 40
Microsemi SoftConsole delete hex file line 41
Microsemi SoftConsole delete hex file line 42

文件下载

del_hex_line1.rar

运行结果:


历史精选文章:

  • Jlink使用技巧之读取STM32内部的程序
  • Jlink使用技巧之单独下载HEX文件到单片机
  • Jlink使用技巧之J-Scope虚拟示波器功能
  • 百度智能手环方案开源(含源码,原理图,APP,通信协议等)
  • 如何在Keil-MDK开发环境生成Bin格式文件
  • elf格式转换为hex格式文件的两种方法
  • 两个HC-05蓝牙模块互相绑定构成无线串口模块
  • STM32实战应用(一)——1602蓝牙时钟1液晶的显示测试
  • 单片机之模块化编程
  • 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》
  • 个人博客添加网易云音乐Flash插件
  • 两行代码搞定博客访问量统计

欢迎大家关注我的个人博客

或微信扫码关注我的公众号

一个将当前目录下HEX文件的第一行数据删除的程序...相关推荐

  1. JAVA-获取Excel文件的第一行数据

    1.pom.xml引入相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi ...

  2. linux使用什么命令能够显示当前目录,执行linux命令,其中显示当前目录下的文件命令是什么...

    linux系统下用ls命令列出当前目录下的文件. ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息.如果不指定 ...

  3. linux shell判断当前目录下的文件或目录

    linux shell判断当前目录下的文件或目录 #!bin/sh for file in ./* doif test -f $filethenecho $file 是文件elseecho $file ...

  4. bat 当前目录下 子目录文件 移动到当前目录 并 文件改名 改后缀名

    window .bat当前目录下 子目录文件 移动到当前目录 @echo off for /r %%a in (*.*) do ( echo %%a move "%%a" &quo ...

  5. 使用bat向文件的第一行中写入内容

    ■前言 批量删除CSV文件第一行的表头,重新写入[新的标头]. (即,删除第一行的内容后,重新写入新的内容) ■実現------------------------------------------ ...

  6. java大文件首行追加,java中实现,在大文件的第一行添加内容

    需求描述: 最近在写一个定时任务,发送多次请求到接口,接口返回报文写入到一个文件中,文件要求格式第一行为总数.这个总数只能在最后的时候才能知道, 这就相当于提出了一个要求:在文件的第一行添加内容,以前 ...

  7. 删除目录下指定文件中匹配行

    删除当前目录下txt文件中匹配pwd的行 find ./ -name "*.txt" | xargs -t sed -i '/pwd/d'

  8. python xy打不开、没有关联程序_绿茶XP系统下exe文件打不开提示没有关联程序如何解决...

    为了提升电脑运行速度,很多朋友都会对xp系统进行优化.不过,一位绿茶xp系统用户反馈自己在优化过程中误操作修改了注册表参数,导致一打开exe文件就提示"文件没有与之关联的程序来执行" ...

  9. python文件的第一行 #!/usr/bin/python3 是什么意思?

    python文件的第一行代码 通常在脚本语言的第一行会看到: #!/usr/bin/env python 或 #!/usr/bin/python 首先要确定的一点是它不是注释.这两句话的目的都是指出你 ...

最新文章

  1. java中的与运算符
  2. Laravel项目上传github后,clone到本地运行时报错500的解决方法
  3. libsvm 64 系统下编译问题
  4. MySQL / 多版本并发控制
  5. POJ - 1381 Secret Code(dfs+高斯整数)
  6. 程序员常犯的5个非技术性错误
  7. java setmessage_Java Message.setTitle方法代码示例
  8. 低代码开发,未来已来
  9. Navicat Premium 12安装过程
  10. 写的将skb copy/clone后转发到源地址的一段代码
  11. 一起talk C栗子吧(第三十九回:C语言实例--创建一棵二叉树)
  12. 如何用计算机控制ipad,躺在床上玩电脑,使用ipone ipad远程控制LAN计算机-ipad如何连接到计算机...
  13. java exchange 日历_如何通过EWS-API 获取所有会议室的日历信息
  14. php 根据时间获取二十四节气
  15. 【Steam VR 2.0】3. Skeleton Poser 自定义抓取手势的使用
  16. Java转换ofd格式到pdf
  17. 解密支付宝所谓黑科技神码
  18. noi字符串11:潜伏者题解
  19. @渗透测试之信息收集
  20. HTML 关于hr标签,虚线

热门文章

  1. Linux Mysql 1130错误解决
  2. Delphi实现类似Android锁屏的密码锁控件
  3. Nios 定时器内核之timestamp_timer
  4. java 构造函数抛出异常,构造函数抛出异常;嵌套异常是java.lang.NoClassDefFoundError:javax/servlet/ServletContext...
  5. python字符串截取拼接_Python字符串拼接、截取及替换方法总结分析
  6. 转载:vscode快捷键
  7. android 原理 组合控件_Android_组合方式自定义控件
  8. 数字语音信号处理学习笔记——语音信号的同态处理(4)
  9. VS2010 VC++ 编译出错 ---error LNK2005: public: virtual __thiscall CMemDC::~CMemDC(void)
  10. 计算机控制读书报告心得,计算机控制系统读书报告