在`fwprintf'之后使用`fprintf'时无输出

Iha*_*imi 7 c linux printf wchar-t stdio

这只是在我测试我分离的更大程序的一部分时发生的.原始函数将以我需要的特殊方式从字符串中删除非ascii字符,就是这个程序

#include <stdio.h>
#include <wchar.h>

int main(int argc, char *argv[])
{
    fwprintf(stdout, L"-- Example\n");
    fprintf(stdout, "-- Example\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不会-- Example在我的linux(Fedora 22)系统上打印第二个.虽然fwprintf()再次使用或fprintf(stderr, "-- Example\n");将工作.

  • 这是预期的行为吗?为什么?

tro*_*foe 2

我相信这个问题可能与文件流的宽方向有关。如果fwide()不使用,则使用第一个文件函数的方向来确定方向(您也可以在打开文件时设置方向,但这不适用于此处)。

一旦流变宽,那么您就需要使用宽函数;当非宽时,您需要使用非宽函数。

方向一旦设定就无法更改。