// // example of recursion: // // function to print file in line-by-line reverse order // // main (test) program obtains filename from first command-line argument // #include #include #include #include // precondition: file has been successfully opened // postcondition: remaining contents of file have been printed in // reverse order (line by line) void reverse_file(ifstream& file); // ---- main program ---- int main(int argc, char *argv[]) { ifstream file; if (argc < 2) { cout << "Usage is: reverse_file filename.\n"; exit(1); } file.open(argv[1]); if (file.fail()) { cout << "Unable to open file " << argv[1] << endl; exit(1); } reverse_file(file); file.close(); return 0 ; } // ---- function definition ---- void reverse_file(ifstream& file) { string line; if (getline(file, line)) { reverse_file(file); cout << line << endl; } return; }