【发布时间】:2025-11-29 10:55:01
【问题描述】:
我正在创建一个 EXE,它与标准输入和标准输出流一起使用。
我的可执行文件的输出正在将一些压缩数据写入标准输出流。
int fd = fileno(stdout);
_setmode(fd, O_BINARY);
n = write(fd, buffer, nbytes);
但是当我将那些写入标准输出流的数据重定向到文件时(使用 my_exe get_data > File.txt ),文件中的数据长度将不匹配原始数据。如果我有 100 个字符的数据,那么在文件中,我看到 106 个字符的数据。我认为文件中添加了一些换行符或回车符。我已将标准输出设置为二进制流。但是在重新定向到文件时,同样的情况正在发生。有什么办法可以解决这个问题。
【问题讨论】:
-
你能在十六进制编辑器中检查生成的文件吗?
-
您能说明
buffer和nbytes是如何定义和分配的吗? -
您是否希望压缩输出比输入小?它并不总是在小数据样本上。
-
您有一个可以比较结果的好文件示例吗?
-
您是说使用
write与_write得到不同的结果吗?这听起来不太可能。在库中,write的符号只是_write的别名符号。从字面上看,它们之间没有区别。fileno和_fileno也是如此。