int fwide(FILE *stream, int mode)
is a function to set (also, get) the stream's orientation.
By orientation, either of the three things can be true --
if the mode is 0, fwide determines the current orientation of the stream.
if the mode is positive, the stream's wide-character oriented.
if the mode is negative, the stream's byte oriented.
This holds for getting, setting of the stream
Your understanding is not entirely off track, just somewhat.
When you want to read data in wchar_t format, then you set it to wide-character orientation, otherwise the usual ASCII suffices.
To simplify further, when you want to read the characters which are beyond the capacity of simple "char" data type, you change the orientation to wchar_t.
I have encountered cases where byte orientation was working for "other-language" characters as below.
Error = 错误: Severity = 严重性: State = 状态:
No idea about how that worked - but yeah, using this function is pretty simple, except for an already 'on' stream. I tried to set-use-reset a stream and the reset part failed.
I guess better approach would be to play more with it.