回 帖 发 新 帖 刷新版面

主题:求助,一个巨2的问题

大家好,我刚注册第一次发帖
刚接触C++一个月吧,遇到了一些很简单的问题但是处理不了
希望大家指教

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    int c,i;
    char filename[801];
    char input[801];
    cout<<"Enter a file name and press ENTER:\n";
    cin.getline(filename,800);
    ifstream filein(filename);                     //i是读取文件
    if(!filein)
    {
        cout<<"File "<<filename<<" could not be opened.\n";
        return -1;
    }
    while(1)
    {
        for(i=1;i<=24&&!filein.eof();i++)
        {
            filein.getline(input,800);
            cout<<input<<endl;
        }
        if(filein.eof())
            break;
        cout<<"More?(Press Q to quit.)";
        cin.getline(input,800);
        c=input[0];
        if(c=='Q'||c=='q')
            break;
    }
    return 0;

}

当这个程序读一个.txt的文件的时候
一次能读24行
当我希望它继续读的时候(比如随意按一个不是Q或q的键)
又能读出24行(while循环了)
但为什么是继续读了24行
也就是读了第25-48行
为什么不是再读一次1-24行呢?!
求高人解释
本人先谢谢了!

回复列表 (共3个回复)

沙发

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

板凳

读过二十四行之后你在吧文件指正移到文件初使位置这样就可以不断的读1-24行了

3 楼

做如下改变就可以第一次读取1-24行 第二次读取1-48行
跟楼上说的一样 就是重置文件指针到起始位置
fstream filein(filename);                    
    if(!filein)
    {
        cout<<"File "<<filename<<" could not be opened.\n";
        return -1;
    }
    int k=0;    //记录循环次数
    while(1)
    {
        k++;
        filein.seekp(ios::beg);        //重置文件指针到文件开始位置
        for(i=1 ;i<=(24*k)&&!filein.eof(); i++)
        {
            filein.getline(input,800);
            cout<<input<<endl;
        }
        if(filein.eof())
            break;

        cout<<"More?(Press Q to quit.)";
        cin.getline(input,800);
        c=input[0];
        if(c=='Q'||c=='q')
            break;
    }

我来回复

您尚未登录,请登录后再回复。点此登录或注册