#include <stdio.h>
#include <string.h>//memset
#include <stdlib.h>//free
int main(int argc,char **argv)
{
FILE *fptarget;
char ch,cnt;
int lSize=0;
char name[40]={0};
char buffer[4096]={0};
fptarget = fopen("STM32F412REapp.bin", "rb");
//https://blog.youkuaiyun.com/a6472953/article/details/7190112
fseek(fptarget,0,SEEK_END);//光标到尾巴
lSize = ftell(fptarget);//光标的位置就是长度了
fclose(fptarget);
cnt = lSize%4096 ? (lSize/4096 +1) :lSize/4096 ;
printf("target len =%d to 4K is numbered %d\n",lSize,cnt);
fptarget = fopen("STM32F412REapp.bin", "rb");
for(char i=0;i<cnt;i++)
{
FILE *fp;
sprintf(name,"NO-%d.bin",i);
fp = fopen(name, "wb");//之前错误 是这里没有b 导致每个不是正好4096
memset(buffer,0,4096);
fread (buffer, sizeof(char), 4096, fptarget);
fwrite(buffer, sizeof(char), 4096, fp);
fclose(fp);
free(fp);//这句话非常重要 否则就第一个bin文件是好的
}
printf("******GKOSON FINISHED*******");
for(char i=0;i<cnt;i++)
{
FILE *fp;
sprintf(name,"NO-%d.bin",i);
fp = fopen(name, "rb");
fseek(fp,0,SEEK_END);//光标到尾巴
lSize = ftell(fp);//光标的位置就是长度了
fclose(fp);
free(fp);
printf("NO-%d.bin len =%d\n",i,lSize);
}
scanf("%d\n",&ch);//人为堵塞一下
return 1;
}