在我测试一个独立的程序部分时,发生了这样的事情。原始函数按一种特殊方式从字符串中删除非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()
,则使用第一个文件函数的方向。一旦流变得“宽”,你就需要使用“宽”函数。你可以通过反转fprintf()
和fwprintf()
的使用来确认这一点。 - trojanfoefprintf(stdout, "-- Example\n");
之前尝试了fwide(stdout, -1)
,但仍然不起作用。虽然你的观点很有道理,如果fwprintf()
调用了fwide()
,那么fprintf()
也可能会调用它。 - Iharob Al Asimi