一、注意的地方
现在的VS都是用了 fopen_s 来读取文本、以前的fopen几乎废弃了。
读取普通的文本文件模式是用 r;但是二进制文件使用 rb;
#include <stdio.h>
//JJINGZHEN_9611UXC_0x2B418B.bin
int getBinSize(char* path)
{
int size = 0;
FILE* file;
errno_t err = fopen_s(&file, path, "rb");
/*
* err 返回0 说明打开成功,返回其他说明失败
*/
if (!err)
{
fseek(file, 0, SEEK_END);
size = ftell(file);
fclose(file);
}
return size;
}
void readBin( ) {
FILE* file1;
unsigned char buf[24345];
errno_t err = fopen_s(&file1, "JJINGZHEN_9611UXC_0x2B418B.bin", "rb");
if (err == 0)
{
printf("打开文件成功!\n");
fread(buf, sizeof(unsigned char), 24345, file1);
fclose(file1);
for (int i = 0; i < 24345; i++)
{
if (i%5 == 0)
{
printf("\n");
}
printf("buf[%d] = 0x%02X ", i, buf[i]);
}
}
else {
printf("打开文件失败!\n");
}
}
int main(void) {
/*
int buf_len = getBinSize("JJINGZHEN_9611UXC_0x2B418B.bin");
printf("size = %d \n",buf_len);
*/
readBin();
return 0;
}
读取之前,先用 getBinSize 函数获取二进制文件的大小,然后再用这个大小定义一个buf数组。
打印 u8 用 %02X。