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

No output when using `fprintf' after `fwprintf'

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

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

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

    return 0;
}

不会在我的 linux (Fedora 22) 系统上打印第二个 -- Example。尽管再次使用 fwprintf()fprintf(stderr, "-- Example\n"); 会起作用。

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

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

方向一旦设置,便无法更改。