| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 461 人关注过本帖
标题:编译、链接、运行都没问题,但是就是达不到预期的结果!!!不知咋回事?? ...
只看楼主 加入收藏
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:5 
编译、链接、运行都没问题,但是就是达不到预期的结果!!!不知咋回事???
题目是这样的:
给定一个要读取的文本文件,我们将计算文件的字节大小并将它存储在文件尾部。另外每次遇到一个换行符,我们都将当前的字节大小包括换行符存储在文件末尾。例如已知文本文件“copy.txt”的内容如下:
abcd
efg
hi
j
程序应该生成下面修改之后的文本文件
abcd
efg
hi
j
5 9 12 14 24

但是我编写了程序,程序的结果却是这样的:
abcd
efg
hi
j
12
不知咋回事!!!请各位高手帮忙看看。
程序源码如下:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    fstream infile("copy.txt", ios_base::in | ios_base::app);
    int cnt = 0;
    char ch;
    infile.seekg(0);

    while(infile.get(ch))
    {
        cout.put(ch);
        ++cnt;

        if(ch == '\n')
        {
            streamoff mark = infile.tellg();
            infile << cnt << ' ';
            infile.seekg(mark);
        }
    }

    infile.clear();

    infile << cnt << endl;
    cout << "[" << cnt << "]" << endl;
   
    return 0;
}
搜索更多相关主题的帖子: 文本文件 换行符 
2011-02-24 15:46
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
一种比较简单的改法是像这样:
程序代码:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream infile("copy.txt");
    ofstream outfile("copy.txt", ios_base::app);

    int cnt = 0;
    char ch;
    infile.seekg(0);

    while(infile.get(ch))
    {
        cout.put(ch);
        ++cnt;

        if(ch == '\n')
        {
        outfile << cnt << ' ';
        }
    }

    outfile << cnt << endl;
    cout << "[" << cnt << "]" << endl;

 
    return 0;
}

2011-02-24 16:12
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:10 
请用cat命令查看一下你的copy文件,根本就没有写进去啊。再考虑一下文件的打开方式吧。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-24 16:19
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
二楼的基本正确,就是多了一个数字,最后一个数字。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-24 16:21
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
看楼主的意思就是要多吧,倒数第二个是统计完最后一行时加的。最后一个是全文的计数。
不过我也没太看这个程序,总之程序的逻辑用的还是楼主的示例。我只是改了几个語句。
2011-02-24 16:23
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
收藏
得分:0 
我改正了。哈哈。只要加一条代码就ok了。
程序代码:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    fstream inOut("copy.txt", ios_base::in | ios_base::app);
    int cnt = 0;
    char ch;

    inOut.seekg(0);

    while(inOut.get(ch))
    {
        cout.put(ch);
        ++cnt;

        if(ch == '\n')
        {
            streamoff markcur = inOut.tellg();
            inOut.seekg(-1, ios_base::end);
            inOut << cnt << ' ';
            inOut.seekg(markcur);
        }
    }

    inOut.clear();

    inOut << cnt << endl;
    cout << "[" << cnt << "]" << endl;
   
    return 0;
}

 
2011-02-25 13:58
快速回复:编译、链接、运行都没问题,但是就是达不到预期的结果!!!不知咋回事 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017938 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved