Just as we thoroughly explored formatted output in an earlier chapter, in this chapter, we nearly exhaustively explored formatted input. We began with a new understanding of I/O streams. We learned how a stream is a flow of bytes from a source to a destination. For the console, the streams are the pre-defined stdin, stdout, and stderr variables. We also learned how nearly all of the input and output functions have multiple forms, depending on which stream is being used.
Once we learned about streams, we then began our exploration of input stream format specifiers. Much of what we learned is borrowed from our exploration of output format specifiers. We wrote simple programs to explore how to input integers, decimal numbers, strings, and characters. We also learned about, through the programs we wrote, scan sets, input field width control, and the non-assignment specifier. All of these expanded our ability to convert various forms of input data streams. After all...