【发布时间】:2013-05-19 07:05:08
【问题描述】:
我正在尝试在 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 - 意大利
【问题讨论】:
-
我不能完全跟随你,但首先摆脱 dev-c++... 使用 g++ 或 VS 来自 MS,体面的环境。然后,
memset每次使用前你的名称文件。 -
在尝试使用相同的
fstream创建或重新打开该文件之前,您是否尝试过str.clear() -
我无法重现您的问题,一切正常! (gcc)
-
对我来说也很好用(虽然不是 dev-c++)