DOSでDJGPPを使用してバイナリファイルを読み取っているときに、このコードがハングします。 これはfreadコールが行われたときに発生します。コールが削除されると、プログラムは正常に実行されます。 同じコードがVisual C++ 2008で正常に動作します。 djgppで同様の問題が発生した人はいますか? 本当にシンプルなものが欠けていますか?DJGPPでfreadエラーが発生する
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;
}
freadの最初の引数は必ずxだけでなく&xでなければなりません。これは、charバッファへのポインタを必要とします。ただcharにします。 –
はい、私はそれを修正しました。私はまだハングアップします。 – vivekian2
注:ファイルが見つからないときはエラーはありません(スタイルの点など) – KevinDTimm