この非常に単純なコードを dev-C++ で実行しようとしています。
int fflag, num;
char nomefile[40];
fstream str;
fflag=0;
while (fflag==0)
{
cout<<"\nFile name? ";
cin>>nomefile;
str.open(nomefile,ios::in);
//Checking if file exists
if (str)
{
fflag=1;
str>>num; // Reading a value and sending it to standard output
cout<<num<<"\n";
}
else
{
cout<<"\nFile doesn't exist! ";
}
}
既存のファイルを開こうとしても問題ありません。存在しないファイルを開こうとすると、エラー メッセージ (ファイルが存在しません) が表示されますが、その後既存のファイルを開こうとすると (つまり、同じループ内で)、同じエラー メッセージが生成されません。
存在しないファイルを検出した後、クローズ命令を追加しようとしましたが、問題は解決しません。理解できない!存在しないファイルを開こうとすると、ファイルが存在する場合でも、その後の再試行 (str.open を使用) で NULL ポインターが返されるようです。
同じコードが Code::Blocks で正しく実行されるため、dev-C++ に関する問題であるか、ソフトウェアの移植性の問題である可能性があります。
何か助けはありますか?どうもありがとう!ジャンカルロ・ペルロ - イタリア