switch 语句疑问,文件输出没反应

mechanicser 2016-08-24 11:03:41
代码比较长,我就写一下大概,请各位帮我分析下
我写了一个循环内有switch的函数

founction()
{
ofstream fout;
fout.open("123.txt")
fout << " ....." << endl;
fout.close();
for(i=0;i<N;i++)
{
fout.open("123.txt",ios::app);
int n;
n = ^&(^(*&*(反正就是算数式);
switch(n)
{
case 1:
fout << "........." << endl;
fout.close();
break;
case 2:
break;
....................
case 5:
fout << "................." << endl;
fout.close();

}
}

}

就是想进入函数,就打开文件123,抹掉所有内容,重新写
但是switch中要续写,关键是case1中的fout执行,当n=5时,case5中的fout却不执行啊!我打开文件找了半天就是没有我要输出的东西!当我把代码改成如下时,就OK了

founction()
{
ofstream fout;
fout.open("123.txt")
fout << " ....." << endl;
fout.close();
for(i=0;i<N;i++)
{

int n;
n = ^&(^(*&*(反正就是算数式);
switch(n)
{
case 1:
fout.open("123.txt,ios::app);
fout << "........." << i << endl;
fout.close();
break;
case 2:
break;
....................
case 5:
fout.open("123.txt,ios::app);
fout << "................." << i << endl;
fout.close();

}
}

}

这是何故呢?
...全文
581 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mechanicser 2016-08-25
  • 打赏
  • 举报
回复
引用 4 楼 paschen的回复:
想不通就单步跟踪程序运行啊 检查是否下一次读之前文件已关闭
调试了,就像我在2楼说的,每次我点下一步,蓝色条条到任意fout那行,就没反应了,点下一步,跳过都没用,只能关闭调试再重开,我也不晓得是怎么回事,用的是DEV C++,WIN 10 64位
lm_whales 2016-08-25
  • 打赏
  • 举报
回复
每个 case 语句的break 前 都要close 或者统一 close 总之 ,每个open 对应一个close ,,,,,,,,,,,,,,,,,,,,,,, 虽然析构的时候,可以close 但是你这里不断的open 会出错 所以每个open 要配一个 close 以免,两次打开同一个文件
paschen 2016-08-25
  • 打赏
  • 举报
回复
想不通就单步跟踪程序运行啊 检查是否下一次读之前文件已关闭
ZiSheng 2016-08-25
  • 打赏
  • 举报
回复

founction()
{
ofstream fout;
fout.open("123.txt")
fout << " ....." << endl;
fout.close();
for(i=0;i<N;i++)
{
  fout.open("123.txt",ios::app);
   int  n;
   n = ^&(^(*&*(反正就是算数式);
  switch(n)
      {
          case 1:
               fout << "........."      << endl;
               break;
          case 2:
               break;
                ....................
          case 5:
             fout << "................." << endl;

      }  
             fout.close();
}

}

你的case1执行之后就close了,当case5时是不会执行的,所以改成以上就ok了。
mechanicser 2016-08-24
  • 打赏
  • 举报
回复
还有个疑问,我用DEV C++调试时,点下一步,当蓝条移动到fout <<时,就不动了,不光这次是这样,以前调试,其他函数都是这样,只要到ofstream的fout<<啊,fo<<啊,ff<<啊,都不动了,这是怎么回事?

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧