diff options
| author | Chanin Timbal <[email protected]> | 2024-06-11 16:15:22 -0700 |
|---|---|---|
| committer | Chanin Timbal <[email protected]> | 2024-06-11 16:15:22 -0700 |
| commit | ea5127635d43333e10739a7d9750b30aa94c51e4 (patch) | |
| tree | 47b5edac345a145ab9b0eebd1745b51509c43563 /CST 126/Homework_2/program.cpp | |
| parent | Completed Homework 2!! (diff) | |
| download | homework-1-chaninnohea-develop.tar.xz homework-1-chaninnohea-develop.zip | |
Diffstat (limited to 'CST 126/Homework_2/program.cpp')
| -rw-r--r-- | CST 126/Homework_2/program.cpp | 96 |
1 files changed, 95 insertions, 1 deletions
diff --git a/CST 126/Homework_2/program.cpp b/CST 126/Homework_2/program.cpp index cd5f36b..3aa2a2d 100644 --- a/CST 126/Homework_2/program.cpp +++ b/CST 126/Homework_2/program.cpp @@ -2,6 +2,7 @@ #include "helpers.hpp" #include "Base64Converter.hpp" +/* constexpr short ARG_COUNT = 4; bool Worker(); @@ -79,4 +80,97 @@ bool Worker(char** argv) delete[] buffer; return false; } -}
\ No newline at end of file +} +*/ + +void displayMenu() { + std::cout << "\nWelcome to the Base64 Encoder/Decoder:\n"; + std::cout << "1. Encode\n"; + std::cout << "2. Decode\n"; + std::cout << "3. Exit\n"; +} + +int main() { + char choice; + bool exitProgram = false; + + do { + displayMenu(); + std::cout << "\nEnter your choice: "; + std::cin >> choice; + + switch (choice) { + case '1': { + std::string sourceFile, destinationFile; + std::cout << "Enter source file name: "; + std::cin >> sourceFile; + std::cout << "Enter destination file name: "; + std::cin >> destinationFile; + + size_t size = 1; + char* buffer = nullptr; + buffer = ReadFileAsBinary(sourceFile.c_str(), buffer, size); + + if (buffer) { + char* encodedBuffer = Base64Encode(buffer, size); + if (encodedBuffer) { + bool success = WriteTextToFile(destinationFile.c_str(), encodedBuffer); + delete[] encodedBuffer; + if (success) + std::cout << "File encoded successfully.\n"; + else + std::cerr << "Error: Unable to write to destination file.\n"; + } + else { + std::cerr << "Error: Unable to encode file.\n"; + } + delete[] buffer; + } + else { + std::cerr << "Error: Unable to read from source file.\n"; + } + break; + } + case '2': { + std::string sourceFile, destinationFile; + std::cout << "Enter source file name: "; + std::cin >> sourceFile; + std::cout << "Enter destination file name: "; + std::cin >> destinationFile; + + size_t size = 0; + char* buffer = nullptr; + buffer = ReadTextFromFile(sourceFile.c_str(), buffer); + + if (buffer) { + size_t decodedSize = 0; + char* decodedBuffer = Base64Decode(buffer, decodedSize); + if (decodedBuffer) { + bool success = WriteFileFromBinary(destinationFile.c_str(), decodedBuffer, decodedSize); + delete[] decodedBuffer; + if (success) + std::cout << "File decoded successfully.\n"; + else + std::cerr << "Error: Unable to write to destination file.\n"; + } + else { + std::cerr << "Error: Unable to decode file.\n"; + } + delete[] buffer; + } + else { + std::cerr << "Error: Unable to read from source file.\n"; + } + break; + } + case '3': + std::cout << "Thank you for using the Base64 Encoder/Decoder! Goodbye.\n"; + exitProgram = true; + break; + default: + std::cout << "Invalid choice. Please try again.\n"; + } + } while (!exitProgram); + + return 0; +} |