我有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文件操作。我和其他一些孩子以及计算机实验室的导师似乎无法使其正常工作。
答案 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;
}