最近遇到二进制文件读不全的情况,之前使用c++读文件一直都是正确的,也因此这个问题困扰我好久。
c++读文件代码
std::ifstream input(FilePath.c_str(), std::ios::in | std::ios::binary);
if (!input)
std::cout << "file open error";
//int blockindex = 0, blockgridsize[3] = { 0 };
input.read((char*)(&blockindex), sizeof(blockindex));
input.read((char*)(&blocksize[0]), sizeof(int));
input.read((char*)(&blocksize[1]), sizeof(int));
input.close();
这个读取方法基本上没啥问题,但是我后面存储的数据值很大,可能遇到了结束符。
解决方法:使用c语言读取
FILE *f = fopen(files[i].c_str(), "rb");
if (!f)
{
exit(1);
}
//参数一 读取数据
//参数二 读单个数据的大小
//参数三 数据量
//参数四 文件指针
fread((char*)(&temp[0]), sizeof(int), temp.size(), f);
fclose(f);