c - 为什么将 wchar 字符串写入文件在 C 中不起作用

标签 c file wchar-t wchar

我希望我的程序从用户那里获取一个 wchar 字符串并将其打印到文件中,但即使它正确地将字符串打印到命令提示符,当涉及到文件时,它只打印 ascii 字符,任何其他字符字符打印不正确。

示例: 它不是写“olá”,而是打印“ol”

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

int main(){
    FILE *pst = fopen("C:\\teste1.txt","a");
    wchar_t word[100];
    fgetws(word,20,stdin);
    fputws(word,stdout);
    fputws(word,pst);
    fwprintf(pst,word);
    return 0;
}

最佳答案

发布的代码表现应有。

Georgioss-MBP:~ gsamaras$ g++ -o m main.cpp 
Georgioss-MBP:~ gsamaras$ ./m
olá
olá
Georgioss-MBP:~ gsamaras$ cat test.txt 
olá
olá

从终端执行此操作,因为问题可能是您正在从文本编辑器查看文件,而文本编辑器的编码未设置为正确显示宽字符。

关于c - 为什么将 wchar 字符串写入文件在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50766404/

相关文章:

c - 不使用 sting 库交换字符串的单词并使用指针

c++ - 了解 MSVS C++ 编译器优化

.net - 如何以编程方式复制在 Windows 下锁定的文件或文件夹?

windows - C/C++中的跨平台unicode : Which encoding to use?

c++ - 如何从 wchar_t* 转换为 wstring?

C、从另一个文件调用链表函数

将常量转换为 union

c - fscanf() fclose() 或读取文件退出并结束程序

objective-c - 如何确定 NSURL 是否是一个目录

c - glib gunichar 和 wchar_t 之间有什么区别,哪个更适合跨平台解决方案?