#include <stdio.h>
int main(void)
{
FILE *fp1,*fp2,*fp3;
char ch;
int lSize=0;
fp1 = fopen("IAP.hex", "r");
fp3 = fopen("M.hex", "w");
ch = fgetc(fp1);
while(ch!=EOF)
{
fputc(ch , fp3);
ch = fgetc(fp1);
}
fclose(fp1);
#if 0
lSize = ftell (fp3);//告诉指针当前位置 29788 正巧是告诉文件大小29.0 KB (29,788 字节)
printf("%d\n",lSize);
fseek (fp3 , 10 , SEEK_END);//从文件尾部移动10字节 这样下面的打印是29798 形成10个空洞 如果二参数是-10就是左移10 打印29778
lSize = ftell (fp3);
printf("%d\n",lSize);
rewind (fp3);//把指针放到文件头部 这样下面的打印就是0
lSize = ftell (fp3);
printf("%d\n",lSize);
#endif
fseek (fp3 , -13 , SEEK_END);//从尾部往左边走13 正好丢弃最后1行
fp2 = fopen("APP.hex", "r");
ch = fgetc(fp2);
while(ch!=EOF)
{
fputc(ch , fp3);
ch = fgetc(fp2);
}
fclose(fp2);
fclose(fp3);
printf("FINISH");
scanf("%d\n",&ch);//人为堵塞一下
return 1;
}
#include <stdio.h>
//int main(void)
int main(int argc,char **argv)
//argc是命令行总的参数个数
//argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名 也就是用户传入的从第1个开始用
//$PROJ_DIR$\..\Tool\CombineBootloaderAndApplication.exe
//$PROJ_DIR$\..\bootloader\Debug\Exe\bootloader.hex
//$PROJ_DIR$\Seed_STM32L471RE\Exe\application.hex
//$PROJ_DIR$\Seed_STM32L471RE\Exe\TOUCH-H1&H2&H3-V200_BTEA.hex
//argv[0]--本程序名字
//argv[1]--IAP路径
//argv[2]--APP路径
//argv[3]--合并HEX路径
{
FILE *fp1,*fp2,*fp3;
char ch;
int lSize=0;
fp1 = fopen("argv[1]", "r");
fp3 = fopen("argv[3]", "w");
ch = fgetc(fp1);
while(ch!=EOF)
{
fputc(ch , fp3);
ch = fgetc(fp1);
}
fclose(fp1);
#if 0
lSize = ftell (fp3);//告诉指针当前位置 29788 正巧是告诉文件大小29.0 KB (29,788 字节)
printf("%d\n",lSize);
fseek (fp3 , 10 , SEEK_END);//从文件尾部移动10字节 这样下面的打印是29798 形成10个空洞 如果二参数是-10就是左移10 打印29778
lSize = ftell (fp3);
printf("%d\n",lSize);
rewind (fp3);//把指针放到文件头部 这样下面的打印就是0
lSize = ftell (fp3);
printf("%d\n",lSize);
#endif
fseek (fp3 , -13 , SEEK_END);//从尾部往左边走13 正好丢弃最后1行
fp2 = fopen("argv[2]", "r");
ch = fgetc(fp2);
while(ch!=EOF)
{
fputc(ch , fp3);
ch = fgetc(fp2);
}
fclose(fp2);
fclose(fp3);
printf("GKoSon FINISH");
return 1;
}