gpt4 book ai didi

c - 为什么我不能从 WriteConsole 重定向输出?

转载 作者:行者123 更新时间:2023-12-03 15:50:23 25 4
gpt4 key购买 nike

在以下程序中,我使用两个不同的功能打印到控制台

#include <windows.h>

int main() {
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD byteswritten;
WriteConsole(h, "WriteConsole", 12, &byteswritten, NULL);
WriteFile(h, "WriteFile", 9, &byteswritten, NULL);
}

如果当我执行这个程序并使用 a > out.txt 重定向它的输出或 a 1> out.txt除了 out.txt 的内容,没有任何东西打印到控制台(如预期的那样)只是
WriteFile

允许调用 WriteFile 的两者有什么不同?重定向到文件并调用 WriteConsole去……无处可去

在 Windows 10 上使用 gcc 和 msvc 进行测试

最佳答案

WriteConsole仅适用于控制台屏幕句柄,不适用于文件或管道。

如果您只写 ASCII 内容,您可以使用 WriteFile一切。

如果您需要编写 Unicode 字符,您可以使用 GetConsoleMode 要检测句柄类型,它对于不是控制台句柄的所有内容都失败。

在进行这样的原始输出时,您还必须处理 BOM如果句柄被重定向到一个文件。

This blog post是在 Windows 控制台中处理 Unicode 的一个很好的起点...

关于c - 为什么我不能从 WriteConsole 重定向输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com