为什么要写这样一个函数

在使用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;
}
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

文件下载

del_hex_line1.rar

运行结果:


历史精选文章:


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

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

一个将当前目录下HEX文件的第一行数据删除的程序的更多相关文章

  1. du -sh*查看当前目录下的文件夹大小

    du -sh*查看当前目录下的文件夹大小   u 命令    用途    概述磁盘使用.    语法  du [ -a | -s ] [ -k ] [ -m ] [ -g ][ -l ] [ -r ] ...

  2. 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/

    企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2 ...

  3. vs code开发python时找不到当前目录下的文件、UnicodeDecodeError: 'gbk'

    一.vs code开发python时找不到当前目录下的文件, file = open("readme.txt")一直报错,找不到目录下面的文件 原来vscode 默认都是以打开的项 ...

  4. linux命令(47):Linux下对文件进行按行排序,去除重复行

    Linux下对文件进行按行排序:sort 与 uniq 命令简介 Linux | May 24, 2015 | linux sort 命令可针对文本文件的内容,以行为单位进行排序.其基本语法格式为: ...

  5. python声明文件编码,必须在文件的第一行或第二行

    #coding=utf-8和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型 注意的两点: 1.声明必须在文件的第一行或第二行: 2.coding后面必须紧跟冒号或等号,#c ...

  6. Oracle 10g 数据文件的第一个数据块结构

    一.数据文件的第一个数据块结构kcvfh BBED> set file 1 FILE# 1 BBED> set block 1 BLOCK# 1 --查看第一个数据块的整体结构 BBED& ...

  7. oracle 分组取第一行数据 ,查询sql语句

    oracle  分组取第一行数据 SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, t.* FR ...

  8. PB笔记之第一行数据不能删除的解决方法

    如果第一行数据不能删除,则单独写SQL进行删除 window lw_sheet //dw_1.event pfc_deleterow()long i String ls_manidInteger ls ...

  9. AIX查询当前目录下各文件及目录大小

    AIX下要查询某个目录下各个文件或目录的占用空间大小 可以对du命令增加一个别名alias 放在~/.profile里 alias dus='du -sg ./* |sort' s表示文件和目录都是显 ...

随机推荐

  1. 转:未能打开编辑器:Unmatched braces in the pattern.

    原文地址:http://blog.csdn.net/hytdsky/article/details/4736462 Eclipse出现这个问题而不能查看源代码  原因就是语言包的问题 出现这个问题了 ...

  2. pycharm something

    e1:使用的版本2016.3 发现无法执行py程序,执行菜单为灰色.选择py为2.7. e2:使用过jython可以运行,但是语法有问题str.formate无法执行

  3. [翻译] USING GIT IN XCODE [2] 在XCODE中使用GIT[2]

    USING GIT IN XCODE http://www.cimgf.com/2013/12/10/using-git-in-xcode/ USING AN EXISTING REMOTE PROJ ...

  4. 通过nginx 访问 centos 7 服务器上的.Net Core

    先安装依赖 # yum -y install pcre-devel openssl openssl-devel # yum -y install gcc gcc-c++ autoconf automa ...

  5. PHP设计模式系列 - 委托模式

    委托模式 通过分配或委托其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性. 应用场景 设计了一个cd类,类中有mp3播放模式,和mp4播放模式 改进前,使用cd类的播放模式,需要在实例化的 ...

  6. KVOController原理解析

    1.使用类似动态代理的模式和消息派发中枢模式实现整个架构: 2.使用NSMapTable和NSHashTable进行切面信息的增删查维护:主要用于去重和查看是否存在. 实现方式 消息流 KVOCont ...

  7. Kubernetes-dns 服务搭建

    DNS 服务不是独立的系统服务,而是一种 addon ,作为插件来安装的,不是 kubernetes 集群必须的(但是非常推荐安装).可以把它看做运行在集群上的应用,只不过这个应用比较特殊而已. DN ...

  8. Android学习路线总结,绝对干货(转)

    转自:https://www.cnblogs.com/yishaochu/p/5436094.html 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉 ...

  9. playbook-拓展

    一.Handles 1. Handlers 在发生改变时执行的操作 2. handlers也是一些task的列表,通过名字来引用,它们和一般的task并没有什么区别. 3. handlers是由not ...

  10. HBase学习之路 (五)MapReduce操作Hbase

    MapReduce从HDFS读取数据存储到HBase中 现有HDFS中有一个student.txt文件,格式如下 95002,刘晨,女,19,IS 95017,王风娟,女,18,IS 95018,王一 ...