There are two types of stream orientation for input and output:
A stream is without orientation when that stream has been associated with a file but before an operation occurs on the stream.
Once any operation is performed on that stream, that stream is first assigned its orientation by that operation. The stream's orientation remains that way until the file has been closed and reopened.
After a stream orientation is established, any call to a function of the other orientation is not applied. For example, a byte-oriented input/output function does not have an effect on a wide-oriented stream.
The predefined console streams, stdin, stdout, and stderr have no orientation at program startup.