现在看到是在18个4K以后数据不同了
建立一个文件夹 吧OTA.BIN放进了 执行EXE就可以
#include <stdio.h>
#include <string.h>//memset
#include <stdlib.h>//free
#define SIZE 4096
int main(int argc,char **argv)
{
FILE *fptarget;
int ch,cnt;
int lSize=0,lastlen=0;
char name[40]={0};
char buffer[SIZE]={0};
fptarget = fopen("OTA.bin", "rb");
//https://blog.csdn.net/a6472953/article/details/7190112
fseek(fptarget,0,SEEK_END);//光标到尾巴
lSize = ftell(fptarget);//光标的位置就是长度了
fclose(fptarget);
cnt = lSize%SIZE ? (lSize/SIZE +1) :lSize/SIZE ;
lastlen = lSize - (SIZE*(cnt-1));
printf("target len =%d to every =%d is numbered %d\n",lSize,SIZE,cnt);
fptarget = fopen("OTA.bin", "rb");
for(int i=0;i<cnt-1;i++)
{
FILE *fp;
sprintf(name,"NO-%03d.bin",i);
fp = fopen(name, "wb");
memset(buffer,0,SIZE);
fread (buffer, sizeof(char), SIZE, fptarget);
fwrite(buffer, sizeof(char), SIZE, fp);
fclose(fp);
free(fp);//这句话非常重要 否则就第一个bin文件是好的
}
FILE *fp;
sprintf(name,"NO-%03d.bin",cnt-1);
fp = fopen(name, "wb");
memset(buffer,0,SIZE);
fread (buffer, sizeof(char), lastlen, fptarget);
fwrite(buffer, sizeof(char), lastlen, fp);
fclose(fp);
free(fp);//这句话非常重要 否则就第一个bin文件是好的
printf("******GKOSON FINISHED*******\r\n");
for(int i=0;i<cnt;i++)
{
FILE *fp;
sprintf(name,"NO-%03d.bin",i);
fp = fopen(name, "rb");
fseek(fp,0,SEEK_END);//光标到尾巴
lSize = ftell(fp);//光标的位置就是长度了
fclose(fp);
free(fp);
printf("NO-%03d.bin len =%d \n",i,lSize);
}
scanf("%d\n",&ch);//人为堵塞一下
return 1;
}