aboutsummaryrefslogtreecommitdiff
path: root/week06/Exercise06.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'week06/Exercise06.cpp')
-rw-r--r--week06/Exercise06.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/week06/Exercise06.cpp b/week06/Exercise06.cpp
new file mode 100644
index 0000000..d05f495
--- /dev/null
+++ b/week06/Exercise06.cpp
@@ -0,0 +1,42 @@
+#include <fstream>
+#include <iostream>
+
+int main() {
+ char fileName1[1024];
+ std::cin.getline(fileName1, 1024);
+ char fileName2[1024];
+ std::cin.getline(fileName2, 1024);
+
+ std::fstream file1(fileName1);
+ if (!file1.is_open()) {
+ std::cout << "Couldn't open file!" << std::endl;
+ return 1;
+ }
+
+ std::ifstream file2(fileName2);
+ if (!file2.is_open()) {
+ std::cout << "Couldn't open file!" << std::endl;
+ return 1;
+ }
+
+ file1.seekg(0, std::ios::end);
+ size_t endIndex = file1.tellg();
+ size_t middleIndex = endIndex / 2;
+ size_t latterHalfSize = endIndex - middleIndex;
+
+ file1.seekg(middleIndex, std::ios::beg);
+ char* buffer = new char[latterHalfSize];
+ file1.read(buffer, latterHalfSize);
+ file1.clear();
+
+ file1.seekp(middleIndex, std::ios::beg);
+ while (file2.peek() > -1) {
+ file1.put(file2.get());
+ }
+ file1.write(buffer, latterHalfSize);
+
+ delete[] buffer;
+
+ file1.close();
+ file2.close();
+}