gpt4 book ai didi

C++——读取二进制文件错误或编译器错误?

转载 作者:行者123 更新时间:2023-11-28 03:38:39 27 4
gpt4 key购买 nike

我在 g++(版本 4.6.3)中尝试了以下代码的许多版本。

int main(int argc,char *argv[])
{
std::string fname(argv[1]);
std::cout<<"fname is"<<fname<<std::endl;

// std::fstream f(fname.c_str(),
std::fstream::in|std::fstream::out|std::fstream::binary);
std::fstream f(fname.c_str(),std::ios::in|std::ios::out|std::ios::binary);
unsigned char b[512];
memset(b,0xff,512);
std::cout<<f.tellg()<<std::endl;
f.seekg(0,std::ios::beg);
std::cout<<f.tellg()<<std::endl;
f.read((char *)b,512);
for(int ii=0;ii<sizeof(sector0);ii++)
std::cout<<std::hex<<(int )(b[ii]) <<" ";
std::cout<<std::endl;
}

在每种情况下,结果都是相同的,我传入源代码的文件名 (sample ascii),tellg 报告 1 并且缓冲区与文件匹配。如果我传入可执行文件的文件名(我的示例二进制文件),tellg 报告 -1 并且转储全部为 ff。

是我做错了什么还是编译器错误?

最佳答案

很抱歉回答很短,但时间不多。

您正在打开文件进行写入 (std::ios::out),这需要对文件进行独占锁定。如果文件已经被使用,获取锁失败,打开和读取也会失败。

关于C++——读取二进制文件错误或编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com