我正在尝试在 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++ 的问题,或者可能是软件可移植性的问题。
有什么帮助吗?非常感谢!Giancarlo Perlo - 意大利