一个将当前目录下HEX文件的第一行数据删除的程序
为什么要写这样一个函数
在使用SoftConsole开发M3程序时,生成的hex文件,必须要把第一行数据删除,才能在Libero中使用,所以写了这个小工具,这是2.0版本了,第一版是直接删除第一行数据,有可能会导致误操作。
实现原理
主要使用到了bat批处理命令和文件IO操作。
- 创建bat批处理文件,内容为dir *.hex /b>hex_file_name.txt
- 运行bat命令,这个命令能将当前目录下的hex文件的名称如filename.hex存入到txt文件中
- 打开存有hex文件名的txt文件
- 读取hex文件
- 读取每一个字符,当读取到换行时,即读取到第一行结束,将以后的字符写入到新的hex文件中,直到文件结束
- 删除其他的文件,只保留新的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;
}
else
return 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
文件下载
运行结果:

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

一个将当前目录下HEX文件的第一行数据删除的程序的更多相关文章
- du -sh*查看当前目录下的文件夹大小
du -sh*查看当前目录下的文件夹大小 u 命令 用途 概述磁盘使用. 语法 du [ -a | -s ] [ -k ] [ -m ] [ -g ][ -l ] [ -r ] ...
- 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/
企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2 ...
- vs code开发python时找不到当前目录下的文件、UnicodeDecodeError: 'gbk'
一.vs code开发python时找不到当前目录下的文件, file = open("readme.txt")一直报错,找不到目录下面的文件 原来vscode 默认都是以打开的项 ...
- linux命令(47):Linux下对文件进行按行排序,去除重复行
Linux下对文件进行按行排序:sort 与 uniq 命令简介 Linux | May 24, 2015 | linux sort 命令可针对文本文件的内容,以行为单位进行排序.其基本语法格式为: ...
- python声明文件编码,必须在文件的第一行或第二行
#coding=utf-8和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型 注意的两点: 1.声明必须在文件的第一行或第二行: 2.coding后面必须紧跟冒号或等号,#c ...
- Oracle 10g 数据文件的第一个数据块结构
一.数据文件的第一个数据块结构kcvfh BBED> set file 1 FILE# 1 BBED> set block 1 BLOCK# 1 --查看第一个数据块的整体结构 BBED& ...
- oracle 分组取第一行数据 ,查询sql语句
oracle 分组取第一行数据 SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, t.* FR ...
- PB笔记之第一行数据不能删除的解决方法
如果第一行数据不能删除,则单独写SQL进行删除 window lw_sheet //dw_1.event pfc_deleterow()long i String ls_manidInteger ls ...
- AIX查询当前目录下各文件及目录大小
AIX下要查询某个目录下各个文件或目录的占用空间大小 可以对du命令增加一个别名alias 放在~/.profile里 alias dus='du -sg ./* |sort' s表示文件和目录都是显 ...
随机推荐
- 转:在决定使用ClickOnce发布你的软件前,应该知道的一些事情(一些常见问题解决方法)
1,无法有效避免非法的下载 使用ClickOnce部署,你的软件的更新版可以发布到Web服务器上,当用户从开始菜单启动软件时,ClickOnce自动到指定的URL去检测是否存在新版本,并且从这个地址下 ...
- 零基础图文傻瓜教程接入Facebook的sdk
零基础图文傻瓜教程接入Facebook的sdk 本人视频教程系类 iOS中CALayer的使用 0. 先解决你的 VPN FQ上外网问题,亲,解决这一步才能进行后续操作^_^. 1. 点击右侧链接 ...
- [翻译] DraggableYoutubeFloatingVideo
DraggableYoutubeFloatingVideo DraggableYoutubeFloatingVideo allows you to play videos on a floating ...
- MDT概念说明
转自:http://www.winos.cn/html/21/t-39621.html http://hi.baidu.com/popweb/item/95ea6cf3aea966b5 ...
- el表达式便利map集合
<c:forEach items="${b.goodMap}" var="entry" varStatus="status"> ...
- RTCM32编解码中的一些概念及相关文献阅读
1. IODC和 IODE —— 导航电文相关.iode/iodc是在GPS系统的ICD2中定义的参数,iode指星历数据事件,iodc指星钟数据事件. IOD 是 issue of data ,数 ...
- java枚举学习入门
一.前言 在java编程过程中,我们通常需要定义一些固定数量的常量,在jdk1.5以前,通常的做法是定义一个静态常量类,但自jdk1.5后,java引入了枚举(关键字enum,全称为 enumera ...
- Yarn遭到挖矿病毒攻击
测试环境在阿里云上暴露出了公网端口,前一段时间CDH集群原本是开启了Kerberos认证,但是因为大家反映使用麻烦,所以就又关闭了Kerberos. 最近几天大家普遍反映测试环境上hive和hdfs ...
- 4027. [HEOI2015]兔子与樱花【树形DP】
Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接 ...
- php5.6+Apache2.4+MySQL
在配置php的时候可以直接使用集成环境XAMPP:https://bitnami.com/stack/xampp?utm_source=bitnami&utm_medium=installer ...