QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1441|回复: 10

C++文件读写的问题

[复制链接]
发表于 2005-12-25 09:06:12 | 显示全部楼层 |阅读模式
£include<iostream>
£include<fstream>
using namespace std;

int main()
{
ofstream out('test.dat');
ifstream in('test.dat');
int a[101];
//A段
for(int a=0;a<=100,a++)
   {
   out<<a<<endl;
   }
for(int a=0;a<=100,a++)
   {
    in>>a[a];
    cout<<a[a]<<endl;
   }

//B段
for(int a=100;a>=0,a--)
   {
   out<<a<<endl;
   }
for(int a=0;a<=100,a++)
   {
    in>>a[a];
    cout<<a[a]<<endl;
   }
}
     


请问为什么只能显示A段,B段不能显示呢?怎么才能显示呢?是因为不能对一个文件写入两次吗?怎么解决呢?
 楼主| 发表于 2005-12-26 18:25:20 | 显示全部楼层
没有人告诉我啊?
回复

使用道具 举报

发表于 2005-12-27 09:39:19 | 显示全部楼层
我这正常
[code:1]
#include<iostream>
#include<fstream>
using namespace std;

int main()
{
    ofstream out("test.dat");
    ifstream in("test.dat");
    int b[101];
    int a;
    //A段
    for(int a=0;a<=100;a++)
    {
        out<<a<<endl;
    }
    for(int a=0;a<=100;a++)
    {
        in>>b[a];
        cout<<b[a]<<endl;
    }

    //B段
    for(int a=100;a>=0;a--)
    {
        out<<a<<endl;
    }
    for(int a=0;a<=100;a++)
    {
        in>>b[a];
        cout<<b[a]<<endl;
    }
}

[/code:1]
回复

使用道具 举报

发表于 2005-12-29 09:59:07 | 显示全部楼层
我的也正常
vc下也正常
结果为从1到100再从100到1

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
ofstream out("test.dat");
ifstream in("test.dat");
int a[101];
int i;
//A段
for(i=0;i<=100;i++)
{
out<<i<<endl;
}
for(i=0;i<=100;i++)
{
in>>a;
cout<<a<<endl;
}

//B段
for(i=100;i>=0;i--)
{
out<<i<<endl;
}
for(i=0;i<=100;i++)
{
in>>a;
cout<<a<<endl;
}
}
回复

使用道具 举报

 楼主| 发表于 2005-12-29 11:50:56 | 显示全部楼层
#include<iostream>
#include<fstream>
using namespace std;

int main()
{
        int c,d,e;
        ofstream out("1227a.txt");
        ifstream in("1227a.txt");
        out<<2<<endl;//初始为2
        cout<<2<<endl;
        for(int a=2;a<=100;a++)//被除数
           {
                  for(int b=2;b<=(a+3)/2;b++)//设定除数的一半循环
                     {
                             in>>c;//读入除数
                             d=a%c;//判断是否被整除
                             cout<<b<<" "<<a<<"%"<<c<<endl;
                             if(d==0)break;
                             //cout<<b<<" "<<a<<"%"<<c<<endl;
                             e=(a+3)/2-1;
                             if(e==b)//判断是否是最大除数
                               {
                                out<<a<<endl;
                                //cout<<a<<"%"<<c<<endl;
                               }
                      }
                   }         
}

//计算素数的程序。将被除数前1/2中的 素数 作检查,如果不能被前面的素数整除则存入该数,算后面的数。
//问题再于除数只能显示2,而以后存入的数读不出来。帮一下忙哈,谢谢!
//这一个一定要帮我试试哦。。。
回复

使用道具 举报

 楼主| 发表于 2005-12-29 11:52:22 | 显示全部楼层
前面哪个我的也通过了,,,嘿嘿。。。一发贴子就通过了哈。。不晓得杂的。。就是后面哪个不得行呢。。。。
回复

使用道具 举报

发表于 2005-12-30 11:48:41 | 显示全部楼层
你的in读的有问题吧
你调一下下面这个程序就知道问题了
我在vc下调的

#include<iostream>
#include<fstream>
using namespace std;

int main()
{
int c,d,e;
ofstream out("1227a.txt");
ifstream in("1227a.txt");
out<<2<<endl;//初始为2
in >> c;
in >> c;

out << 3 << endl;;
in >> c;
in >> c;
}
在第一个in >> c中可以读到2
第二个in >> c就无法往下继续读了
但他还是显示c等于2
尽管后面out << 3加入了一个数字
但后面的in >> c都不起作用了,还是显示c=2

再来看你的程序
第一遍执行的时候
a=2,b=2
第一次的in>>c读出来c=2
然后d = a%c = 0
if(d=0) break;
就跳出了
这时文件中还是只有2这一个已经被in读过的数字
进入第二次循环后
in就无法继续读了
所以你的c后来就一直都是2
回复

使用道具 举报

 楼主| 发表于 2005-12-30 12:03:47 | 显示全部楼层
有没有办法让它读起走呢?
回复

使用道具 举报

发表于 2005-12-30 18:42:11 | 显示全部楼层
个人觉得像你这样处理恐怕不是个好办法吧

如果你已经得到的素数还要使用的话
一般会选择用一维数组或者链表
回复

使用道具 举报

 楼主| 发表于 2005-12-31 19:10:56 | 显示全部楼层
数组是要限制计算大小的哈...
回复

使用道具 举报

发表于 2006-1-1 12:06:35 | 显示全部楼层
链表啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 00:28 , Processed in 0.053174 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表