C++ 从文件获取输入&;在其中存储平均值

C++ 从文件获取输入&;在其中存储平均值,c++,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

因此,当您在很长一段时间后修改“文件处理”时,肯定会发生这种情况。我被这段代码卡住了,我使用了调试。我从一个文件中获取整数:行和列,然后我必须将它们的平均值存储在同一个文件中

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;
}
void main()
{
fstream f(“abc.txt”,ios::out | ios::app | ios::in);
int行,cols;
f>>行;
f>>cols;
int和=0,inp;
int*avg=新的int[行];
对于(int i=0;i>inp;
sum+=inp;
}
平均值[i]=(总和/列);
}

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

  • 当你写这些值时,你不会截断文件。我不知道你是否想要这个
  • 您的输出不由任何空格或换行符分隔,这使得它相当不可读
第二点修正得相当琐碎

首先,您可以关闭该文件,然后重新打开它进行写入。如果您这样做,那么您应该只在第一次读取时打开它。也就是说,我觉得很奇怪,一个程序覆盖了它刚刚处理的数据。这听起来像是一个危险且通常不是很有用的应用程序。您的原因是什么不将数据写入另一个文件

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

53
11 12 13
21 22 23
31 32 33
41 42 43
51 52 53
按原样运行程序后,文件内容将更改为:

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

如果这不是您想要的,并且我上面的猜测您可能想要的也是错误的,请解释您想要的是什么。

为什么您必须将其存储在同一个文件中?处理数据,添加平均值,并将数据写入新的临时文件。删除旧文件,并将新文件重命名为与原始文件相同的文件。基本上,您已经添加了平均数与“相同”文件。问题是当你试图写回文件时,它不会接受它吗?就像你打开文件时,值不在那里一样。实际问题是什么?@Jay是的,当我打开文件时,值不在那里。这是给我们的一个小任务,我必须这样做。int值将相应地出现在文件的下一行中我只需要取它们的平均值,将其存储在avg[]数组中,然后在接下来的两行中将它们存储在同一个文件中。这里没有发布照片的选项,否则我可能会向您显示abc.txt文件。假设
abc.txt
是文本文件,照片可能不是最适合共享的媒体。