读取二进制文件大小的短自上周以来停止工作

read binary file size of short stopped working since last week

本文关键字:停止工作 二进制 文件大小 读取      更新时间:2023-10-16

我在C++(Visual studio 2017(中有一个程序,直到上周才运行良好。 基本上,我正在读取一个二进制文件:

我尝试了几个文件,只是为了确保问题出在代码上。但是在文件的排列上没有任何变化。

void getImageDimension(ifstream &inFile, unsigned int(&dim)[3]) {
for (int i = 0; i < 3; i++) {   
inFile.read((char*)&dim[i], sizeof(short));
}   
}

直到上周,才获得了正确的尺寸,现在(我认为自上次 Windows 更新以来(,它无法正确读取文件。我尝试了几个文件,所以问题似乎是代码。

我应该得到尺寸
144 144 256

但我得到:
34734224 144 32047317

有谁知道可能是什么问题?

inFile.read((char*)&dim[i], sizeof(short));

对我来说看起来不对。&dim[i]属于int*型,您将其视为short*。我建议将其更改为:

short temp;
inFile.read((char*)&temp, sizeof(short));
if ( inFile )
{
// Reading into temp was successful. Use it.
dim[i] = temp;
}
else
{
// Do something with the error.
}