我想从阅读_O_U16TEXT格式的内容stdin。但是fgetwc,fgetws在这种模式下似乎效果不佳。 fgetws用返回一个字符串\n。但是,它不会消耗\n。结果,下次我调用时fgetws,它只返回一个'\ n'。这也恰好发生在fgetwc。我想知道为什么fgetws不消耗\n而是返回一个字符串\n以及如何正确读取_O_U16TEXT?
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <string.h> #include <io.h> #include <fcntl.h>
int main() {
_setmode(_fileno(stdin), _O_U16TEXT); wchar_t ws = (wchar_t)malloc(100); fgetws(ws, 100, stdin); wprintf(L"read: %s\n", ws); wchar_t r = (wchar_t)malloc(100); fgetws(r, 100, stdin); wprintf(L"read: %s\n", r); free(ws); free(r); return 0; } 我希望我输入两个字符串,然后将它们保存在ws和中r。但是在输入一个字符串之后,程序停止了,并且r是\n。
我的操作系统是win10,编译器gcc 8.1.0。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。