首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么这个fstream里面的几个操作会让小弟我进入死循环

2012-02-19 
为什么这个fstream里面的几个操作会让我进入死循环?各位大哥,代码如下,第一次运行的时候也就是d盘没有test

为什么这个fstream里面的几个操作会让我进入死循环?
各位大哥,代码如下,第一次运行的时候也就是d盘没有test.txt文件的时候就会进死循环,但是建立了空文件之后就不会了,照理说不应该是一样的么,小弟非常不解
#include   <afx.h>
#include   <fstream>
#include   <iostream>

using   namespace   std;

bool   UserInfoFind(CString   fn,CString   cd,CString   &un,CString   &ui,CString   &gi)
{
bool   find=false;
fstream   fs;
fs.open(fn,ios_base::in   |   ios_base::out);
if   (!fs)
{
fs.close();
fs.open(fn,ios_base::in   |   ios_base::out   |   ios_base::trunc);
fs.close();
fs.open(fn,ios_base::in   |ios_base::out);
}

char   cLine[40];
while   (!fs.eof())
{
fs.getline(cLine,40);
int   i=fs.eof();
cout < <   i < <   endl;
CString   cdtmp=CString(cLine,cd.GetLength());
if   (cdtmp==cd)
{
find=true;
break;
}
}
fs.close();
if   (find)
{
}
else
{
cout < <_T( "bbb ");
}
return   true;
}
void   main()
{
CString   fn= "d:\\test.txt ";
CString   cd,un,ui,gi;
cd=_T( "aaa ");
UserInfoFind(fn,cd,un,ui,gi);
}

[解决办法]
文件不存在时,处理错误

if (!fs)
{
fs.close(); 空文件
fs.open(fn,ios_base::in | ios_base::out | ios_base::trunc); 还是空文件
fs.close(); 还是空文件

fs.open(fn,ios_base::in |ios_base::out);还是空文件

}


while (!fs.eof()) 空文件 的eof 操作 永远是 0
当然死循环,
if (!fs)
{ 判断是空文件后,应该创建一个文件



[解决办法]
给我 team 的要求是,举凡 I/O 操作,一律检查返回。

热点排行