从文件获取输入&存储平均值

时间:2014-09-15 20:39:23

标签: c++

所以当你在很长一段时间后修改“文件处理”时肯定会发生这种情况。好吧,我有点卡在这个代码中,我已经用过调试了。我从文件中获取整数:行列,然后我必须将它们的平均值存储在同一个文件中。

PS:如果我使用另一个文件存储平均值,它会起作用。

void main()
{

fstream f("abc.txt", ios::out | ios::app | ios::in);

int rows, cols;

f >> rows;
f >> cols;
int sum = 0, inp;
int *avg = new int[rows];

for(int i = 0; i < rows; i++)
{
    sum = 0;
    for(int j = 0; j < cols; j++)
    {
        f >> inp;
        sum += inp;
    }
    avg[i] = (sum / cols);
}

f << endl;
for(int i = 0; i < rows; i++)
{
    f << avg[i];
}

f.close();
delete [] avg;
}

1 个答案:

答案 0 :(得分:0)

关于文件I / O,您的代码有两个(相当小的)问题:

  • 编写值时,不会截断文件。我不知道你是否想要这个。
  • 您的输出未被任何空格或换行符分隔,这使得它非常难以理解。

第二点是相当简单的。

对于第一个,您可以关闭该文件,然后重新打开它以进行写入。如果您这样做,那么您应该只在第一次打开它时进行阅读。也就是说,程序覆盖刚刚处理的数据似乎很奇怪。这听起来像一个危险的,通常不是很有用的应用程序。你没有把数据写入另一个文件的原因是什么?

更新:我创建了以下abc.txt文件:

5 3
11 12 13
21 22 23
31 32 33
41 42 43
51 52 53

按原样运行程序后,文件内容将更改为:

5 3
11 12 13
21 22 23
31 32 33
41 42 43
51 52 53

1222324252

如果这不是你想要的,我上面猜测你可能想要的东西也是错的,请解释你想要的东西。