1. 需求
因为要做车载终端升级ECU的功能,需要通过平台向车载终端下发ECU的烧录文件(.bin),所以,需要在终端的某路径下读取已将下载好的文件,此时需要读取.bin文件。
根据定义好的协议,读取刷写信息,实现刷写升级功能。
2. 实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE *file;
unsigned char *buffer;
unsigned long fileLen;
int i;
file = fopen("aa.bin", "rb");
if (!file)
{
fprintf(stderr, "can't open file %s", "1.m4v");
exit(1);
}
//表示从文件的0查到文件末尾
fseek(file, 0, SEEK_END);
//返回给定的流的当前位置
fileLen = ftell(file);
fseek(file, 0, SEEK_SET);
printf("fileLen == %ld\n",fileLen);
//开辟长度大小
buffer = (char *)malloc(fileLen + 1);
if (!buffer)
{
fprintf(stderr, "Memory error!");
fclose(file);
exit(1);
}
//读取文件内容放入buffer中
fread(buffer, 1, fileLen+1, file);
//关闭文件读取
fclose(file);
for(i = 0; i < fileLen; i++)
{
if(buffer[i] < 0x10)
{
printf("0%-2hX ", buffer[i]);
}
else
printf("%-2hX ", buffer[i]);
if(i%16 == 15)printf("\n");
}
printf("\n");
free(buffer);
return 0;
}
3. 验证结果:
在终端打印的文件内容:
通过UltraEdit软件直接打开aa.bin文件:
可以看到,文件读取正确无误!
参考资料
【1】 CSDN上的大神的文章linux c 读取.bin文件