gpt4 book ai didi

c++ - DJGPP 的恐惧错误

转载 作者:行者123 更新时间:2023-11-28 04:00:53 25 4
gpt4 key购买 nike

在 DOS 上使用 DJGPP 读取二进制文件时,此代码挂起。当进行 fread 调用时会发生这种情况。如果调用被删除,则程序成功运行。相同的代码在 Visual C++ 2008 中运行良好。有没有人遇到过与 djgpp 类似的问题?我错过了一些非常简单的事情吗?

char x; 
string Filename = "my.bin" ;
fp = fopen(Filename.c_str(),"rb");

if (fp == NULL)
{
cout << "File not found" << endl ;
}

if (fseek (fp, 0, SEEK_END) != 0)
{
cout <<"End of File can't be seeked";
return -1;
}

if ( (fileLength = ftell(fp)) == -1)
{
cout <<"Can't read current position of file";
return -1;
}

if (fseek (fp, 0, SEEK_SET) != 0)
{
cout <<"Beginning of File can't be seeked";
return -1;
}

if (fread(&x,sizeof(x),1,fp) != sizeof(x))
{
cout <<"file not read correctly";
return -1;
}

最佳答案

  • 我不明白“fp”是什么。我只需要假设它是“FILE * fp;”。

  • 我没有看到您实际上包含了 ,因此不得不假设您包含了。

  • 我没有看到您实际上包含了 < iostream > 并声明了“using namespace std;”,并且不得不假设您这样做了。

  • 我看不到 fread() 调用之后会告诉您调用是否成功的内容。

当一段代码让您目瞪口呆时,您应该做的第一件事就是将您的错误代码实际减少到绝对但完整的最低限度以重现错误。

结果可能(而且通常确实)是问题出在您认为的地方。

话虽如此,我会尝试更换

if (fread(&x,sizeof(x),1,fp) != sizeof(x))
{
cout <<"file not read correctly";
return -1;
}

int i;
if ( ( i = fgetc( fp ) ) == EOF )
{
perror( "File not read correctly" );
return -1;
}
x = (char) i;
cout << "Success, read '" << x << "'." << endl;

使用“perror()”而不是自制的 cout 消息可为您提供有关任何错误原因的更多信息。使用“fgetc()”会告诉您该文件确实包含您认为的内容,并且您的问题不是由于对单个字节的 fread() 使用有些不常见。

然后报告。

关于c++ - DJGPP 的恐惧错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667055/

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