C语言 在二进制模式下写入标准输出的最简单方法是什么?



我一直在试图找出从C程序中写入二进制数据到标准输出的最佳方法。它在Linux上工作得很好,但我在Windows上编译时遇到问题,因为"n"被转换为"rn"。

是否有一种标准的方式来写标准输出在某种二进制模式,避免换行符转换?如果不是,最简单的方法是什么让Windows停止这样做?

我使用GCC和MinGW,并使用fwritestdout

您可以使用setmode(fileno(stdout), O_BINARY)

如果你想让它与Linux兼容,可以把它包装在一个ifdef中。

参见:https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/setmode?view=vs-2017

你可以这样做(这是跨平台的):

FILE *const in = fdopen(dup(fileno(stdin)), "rb");
FILE *const out = fdopen(dup(fileno(stdout)), "wb");
/* ... */
fclose(in);
fclose(out);

或者您可以将write()read()系统调用直接用于fileno(stdin)fileno(stdout)。这些系统调用在较低级别上操作,不进行任何转换。但是它们也没有从FILE流中获得的缓冲

相关内容

最新更新