将宽字符写入流

时间:2013-12-06 16:08:59

标签: c linux

我想在C中用文件写一个宽字符。

这是我做的,但它似乎不起作用......文件仍然是空的。

wchar_t c = 0x2592;
FILE *file;
file = fopen("foo.txt","w");
fputwc(c, file);

当然我把setlocale(LC_ALL, "fr_FR.utf8");放在主函数中。

2 个答案:

答案 0 :(得分:1)

更改setlocale参数,在我更改后,它对我有用:

setlocale(LC_CTYPE, "fr_FR");
编辑:上面我在Mac OS X上测试过。它似乎工作,输出文件有3个字节。

然后当我在Linux机器上尝试相同的操作(OpenSuse 11)时,它的工作方式不同:结果文件只有一个字节...所以我把它改回setlocale(LC_ALL, "fr_FR.utf8");,看起来好像很好,输出文件有3个字节...所以看起来它有点依赖于系统,函数是POSIX,但我认为它们的工作原理取决于你安装的语言或类似的东西......所有函数都返回错误代码,你应该检查一下。阅读每个功能的手册,看看他们可以返回的错误代码。

答案 1 :(得分:0)

你需要刷新实际写入的字符的输出:

fflush(file);