24小时热门版块排行榜    

查看: 914  |  回复: 10
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xiaowu787

木虫 (正式写手)

[交流] 【求助】程序运行但没达到目的? 已有4人参与

想写个程序处理一个数据文件,数据每隔四行重复一次,希望把数据分成四组(1,5,9...)(2,6,10...)(3,7,11...)(4,8,12...)(行号)分别放在四个文件中,写了如下代码,运行后发现没有实现预期结果 ,请帮忙看哪里出问题了,谢谢!

#include
#include
using namespace std;
int main()
{
  void write();
  write();
  return 0;
}
//
void write()
{
  int i;
  char ch[100];
  ifstream read("re.dat",ios::in);
  for(i=0;i<8;i++)
    {
     if(i%4==0) read.getline(ch,100);
     ofstream write1("out1.dat",ios::app);
     write1<      cout<<'\n';
     if(i%4==1) read.getline(ch,100);
     ofstream write2("out2.dat",ios::app);
     write2<      cout<<'\n';
     if(i%4==3) read.getline(ch,100);
     ofstream write3("out3.dat",ios::app);
     write3<      cout<<'\n';
    }
}

[ Last edited by xiaowu787 on 2010-9-25 at 22:02 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaowu787

木虫 (正式写手)

引用回帖:
Originally posted by magic7004 at 2010-09-26 09:20:00:
帮楼主写了个,这个可以一直读到文件尾。如果不是文本文件,就把"\r\n"改成'\n'

#include
#include
[color=#00 ...

编译的时候提示错误:您看看哪里有问题吧,谢谢!
[u06@pc07 C]$ c++ -o data2 data2.cpp
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/ios_base.h: In copy constructor ‘std::basic_ios >::basic_ios(const std::basic_ios >&’:
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/ios_base.h:779: 错误:‘std::ios_base::ios_base(const std::ios_base&’ 是私有的
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd:55: 错误:在此上下文中
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd: In copy constructor ‘std::basic_ofstream >::basic_ofstream(const std::basic_ofstream >&’:
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd:92: 附注:在这里第一次需要生成的方法 ‘std::basic_ios >::basic_ios(const std::basic_ios >&
5楼2010-09-26 11:58:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
xiaowu787(金币+3):谢谢你详细的分析 2010-09-26 10:08:35
#include
#include
using namespace std;
int main()
{
  void write();
  write();
  return 0;
}
//
void write()
{
  int i;
  char ch[100];
  ifstream read("re.dat",ios::in);
  for(i=0;i<8;i++)
    {
     if(i%4==0) {//这里应该有大括号
read.getline(ch,100);
     ofstream write1("out1.dat",ios::app);
     write1<      cout<<'\n';//这个cout应该是write1吧。另外如果是文本文件的话,换行要用"\r\n"
     }这里也应该有大括号,下面几个if也一样,要加大括号。
     if(i%4==1) read.getline(ch,100);
     ofstream write2("out2.dat",ios::app);
     write2<      cout<<'\n';
//i%4==2貌似漏掉了?
     if(i%4==3) read.getline(ch,100);
     ofstream write3("out3.dat",ios::app);
     write3<      cout<<'\n';
    }
}

[ Last edited by magic7004 on 2010-9-26 at 09:17 ]
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
2楼2010-09-26 09:15:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
xiaowu787(金币+2):谢谢您的热心帮助 2010-09-26 10:09:02
帮楼主写了个,这个可以一直读到文件尾。如果不是文本文件,就把"\r\n"改成'\n'

#include
#include
using namespace std;
int main()
{
        void write();
        write();
        return 0;
}
//
void write()
{
        int i=0;
        char ch[100];
        ifstream read("re.txt",ios::in);
        ofstream write[]={ofstream("out1.txt",ios::app),
                ofstream("out2.txt",ios::app),
                ofstream("out3.txt",ios::app),
                ofstream("out4.txt",ios::app)};
        while(read.getline(ch,100))
        {
                write[(i++)%4]<//如果不是文本文件,把"\r\n"改成'\n'
        }
}

[ Last edited by magic7004 on 2010-9-26 at 09:25 ]
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
3楼2010-09-26 09:20:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by xiaowu787 at 2010-09-26 11:58:36:


编译的时候提示错误:您看看哪里有问题吧,谢谢!
[u06@pc07 C]$ c++ -o data2 data2.cpp
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/ios_base.h: In copy constructor ‘ ...

不知道啊,编译器的问题吗?我的编译器编译OK的。我用VC6和Digital Mars Compiler 8.42n编译都没错。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
6楼2010-09-26 12:38:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见