在 `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()
则使用第一个文件的方向函数来确定方向(您也可以在打开文件时设置方向,但这里不适用)。
一旦流变宽,就需要使用宽函数;当非宽时你需要使用非宽函数。
方向一旦设置,便无法更改。
这只是我在测试我隔离的一个更大程序的一部分时发生的。原始函数会以我需要的特殊方式从字符串中删除非 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()
则使用第一个文件的方向函数来确定方向(您也可以在打开文件时设置方向,但这里不适用)。
一旦流变宽,就需要使用宽函数;当非宽时你需要使用非宽函数。
方向一旦设置,便无法更改。