gpt4 book ai didi

c - 写文件和写控制台

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:07 24 4
gpt4 key购买 nike

我希望能够使用 WriteFileWriteConsole 以便以下 3 个函数起作用:

> Output.exe
> Output.exe > File.txt & type File.txt
> for /F "tokens=*" %A in ('Output.exe') do @echo %A

我设法让前两个与我当前的代码一起工作。但是现在 for 循环输出:The system cannot write to the specified device.

我猜它不喜欢我的 BOM。 如何让我的代码使用 for 循环?

这是我当前的代码。

DWORD   dwBytesWritten;
DWORD dwConMode;
BOOL bRedirectedToFile;
WCHAR str[] = L"Hello World";

bRedirectedToFile = !GetConsoleMode(hStdOut, &dwConMode);

if (bRedirectedToFile)
{
LONG zero = 0;
DWORD pos = SetFilePointer(hStdOut, 0, &zero, FILE_CURRENT);

if (pos == 0)
{
WORD Unicode = ((BYTE*)L"A")[0] == 0 ? 0xfffe : 0xfeff;
WriteFile(hStdOut, &Unicode, 2, &dwBytesWritten, 0);
}

WriteFile(hStdOut, str, lstrlen(str) * sizeof(WCHAR), &dwBytesWritten, 0);
}
else
{
WriteConsole(hStdOut, str, lstrlen(str), &dwBytesWritten, 0);
}

最佳答案

我测试了 wprintf 的输出,它似乎在打印之前将字符串转换为 ASCII。

所以目前可接受的解决方案:

  1. str转换为ASCII
  2. 使用 WriteFile 打印 str

代码也简单得多。

关于c - 写文件和写控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367231/

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