This is correct behaviour, as I understand it. Streams can in C99 be either byte-oriented or wide-oriented (they start with no orientation). Using a mix of orientation is undefined. When you use a byte-oriented function, like printf, the stream is set to byte-oriented. The function fwide can be used to set/check the orientation (can't change it, once it's set).
Pelle