同样一段代码
FILE *fpf = fopen(filePath, "rb");
fseek(fpf, 98, SEEK_CUR);
unsigned short int receive_arr[1024] = { 0 };
fread((char*)&receive_arr, sizeof(receive_arr), 1, fpf);
int tmp_count = 0;
for (auto value : receive_arr)cout << "count: " << ++tmp_count << " value: " << value << endl;
就是正确的
而使用C++ 的fstream:
fstream fpf(filePath, ios::binary);
unsigned short* receive_arr = nullptr;
try
{
receive_arr = new unsigned short(1024);
}
catch (bad_alloc)
{
cerr << "bad_alloc in" << __LINE__ << endl;
}
fpf.seekg(sizeof(char) * 98,ios_base::beg);
fpf.read((char*)receive_arr,2048);
fpf.close();
读出来的receive_arr的值就是不对的,这是为什么?
ios::binary|ios::in加上这个标志试试,fstream 是混合流,要指定打开方式
上下两个长度都不一样 receive_arr[1024 ] 和 new unsigned short(1024); 仔细看下 new的用法 ,怎么new数组
上下两个长度都不一样 receive细看下 new的用法 ,
fpf.seekg(sizeof(char) * 98,ios_base::beg);和fseek(fpf, 98, SEEK_CUR);
一个begin ,另一current
其实读一个文件按说都是开始处,按理说,在你的程序中这两个是一样的
不过你改成ios::cur 试试
应该是用中括号,不是小括号
receive_arr = new unsigned short[1024];