帮我看看文件在第二次打开不成功,书上的一个例子
int main()
{ char fileName[80];
char buffer[255];
cout<< "Please re-enter the file name: ";
cin>> fileName;
ifstream fin(fileName);
if(fin)
{ cout<< "Current file contents:\n";
char ch;
while(fin.get(ch))
cout<< ch;
cout<< "\n***End of file contents.***\n";
}
fin.close();
cout<< "\nOpening "<< fileName << " in append mode...\n";
ofstream fout(fileName,ios::app);
if(!fout)
{ cout<< "Unable to open "<< fileName << " for appending.\n";
return 1;
}
cout<< "\nEnter text for the file: ";
cin.ignore(1,'\n'); //用户输入文件名时留在缓存中的换行符被吃掉
cin.getline(buffer, 255);
fout << buffer <<"\n";
fout.close();
fin.open(fileName);
if(!fin) // 此处第二次打开文件返回不成功
{ cout << "Unable to open "<< fileName << " for reading.\n";
return 1;
}
cout << "\nHere's the contents of the file:\n";
char ch;
while(fin.get(ch))
cout<<ch;
cout<< "\n***End of file contents.***\n";
fin.close();
return 0;
}
问题点数:20、回复次数:5Top
1 楼corrupt(喜欢 睡在床板下 的思考)回复于 2005-07-27 10:18:50 得分 10
这个 有类试的帖子
我上次帮人改时 加了这句:fin.clear();---在fin.clear();之后
你试试
Top
2 楼ericbu(~~~~~~~~~~~~~~~)回复于 2005-07-27 10:27:40 得分 5
我试了试,可以的,但为什么呢?Top
3 楼josn_lu()回复于 2005-07-27 10:32:54 得分 0
我用vcsp6和 vc.Net试了第二次打开不成功返回失败
这个例子应该没有什么错误Top
4 楼josn_lu()回复于 2005-07-27 10:41:25 得分 0
参考了2楼的提示,在fin.close()后面添加fin.clear() 第二次打开就成功了
不知什么原因....
文件操作好象大家都习惯用c格式Top
5 楼WuYL7812(龙哥)回复于 2005-07-27 11:47:51 得分 5
发现一个问题
你弄一个小一点的文件,比如只有3个字母,然后调用get的时候计数,看看调用了几次,实际上调用了4次。假如改用for循环for (i = 0; i < 3; i++),让其只调用3次get,之后关掉文件
下次打开不用调用clear也可以的,就是说你读完文件之后(这里是3个字母)再调用一次get,下次就打不开了。
Top




