如何反复读取文件和从文件中删除内容偶尔?

时间:2014-05-02 19:30:20

标签: c++ file-io

我有4个文件,我声明为fstream,File1,File2,File3,File4;我打开一个单独的data.txt文件,其中包含120个int并将其内容读入file1。然后我必须将file1的内容读入数组大小为20,然后对其进行排序然后将其写入file3,然后再次执行并写入file4。所以此时file3和file4每个包含3个20个排序的int块,file1仍包含原始的120个int。现在我必须合并文件3和文件4,但一次只能有20个元素进入内存。到目前为止,一切都运作良好。我的问题是我必须将mergesort内容写回file1和file2。 File1已经打开,我不能关闭它然后重新打开它,我必须清除file1的内容,所以它是一个空文件,然后我才能回写它。这是学校实验室的一部分,但我们的老师告诉我们只是google文件操作。我和其他一些孩子以及计算机实验室的导师似乎无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

如果您不需要使用fstream,则可以使用freopen

#include <iostream>
#include <cstdio>

using namespace std;

int main() {
  char filename[] = "file1";
  freopen( filename, "r", stdin ); // File content can be read from stdin

  int array[20];
  for(int i=0; i < 20; ++i) {
    cin >> array[i]; // Reads from the file
  }

  freopen( filename, "w", stdout ); // Changes the access to file to write and clears the file 

  // Perform merge .....
  cout << array[0] << endl; // print only to the file

  // ......
  fclose (stdout);
  return 0;
 }