$29
EGRE 246 Advanced Engineering Programming Using
C++
Homework #5 – Binary file viewer
This homework must be your own (individual) work as defined in the course syllabus and
discussed in class.
For this homework you will have to create a binary file viewer. This program will read in
a file byte for byte and print the hexadecimal values and the ASCII representation to the
console output, 16 bytes at a time. After reading 20 lines of 16 bytes, the user should be
prompted with a message “Press ENTER to continue”. If the end of file has not been
detected, the program will start reading in the next 20 lines of 16 bytes (or less if the EOF
file has been detected). A binary file viewer will view all the bytes in the file, including
whitespace, and will print a ‘.’ whenever the byte is considered a control character. You
should use C++ code for opening and reading files, displaying messages to the console
output and reading in from the console output (printf, fprintf, fscanf, fopen, and fclose
functions should NOT be used)
An example output of the program would look like.
Notice the hexadecimal values being capitalized. Check the correctness of your program
on the source file you create for this homework.
The file name to be viewed should be a command-line argument to the program. If the
file cannot be opened, a brief message to the user should be printed and the program
should exit. This message must include the file name that the program is trying to open. If
the second command-line argument is not a filename, but ‘/?’ or when the usage of the
program is not appropriate, the following message should be displayed.
"Binary file viewer
Usage: hw5 [input filename]"
The following methods and functions might be useful for completing your program.
Methods/functions:
fstream get() method
isprint() function
Standard IO manipulators
setw()
I recommend researching these commands using the www.cplusplus.com website. It is
very important that you start to learn how to use this website to your advantage.
Researching the usage of a specific function/method does not violate the honor code, this
information might as well been given in the book or in class. Searching for C++ code
describing a hexadecimal file viewer is in violation with the honor code. This applies to
all homework assignments!
Do not use “magic numbers” for the 20 (lines) and 16 (bytes) to be shown in the program.
As a test you can try to read in the testASCII.bin file and you can test the object file
created while compiling this program.