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

时间:2015-12-17 19:56:14

标签: c linux printf stdio wchar-t

在测试我隔离的更大程序的一部分时,这恰好发生在我身上。原始函数将以我需要的特殊方式从字符串中删除非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");也可以。

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

1 个答案:

答案 0 :(得分:1)

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

一旦流宽,那么你需要使用广泛的功能;当非宽时你需要使用非宽函数。

设置方向后,无法更改。