I've edited the code above. Now std functions should not be broken. I've also added an extra 'n' at the end of the string-to-be-printed because **fputws** seems to need it.
Note: An extra '\n' exists beyond the end of input from **fgetws**. And an extra '\n' has to be appended to a string fed to **fputws**. I really wonder what people have done with the **_O_U16TEXT** flag...
