我正在创建一个EXE,它与stdin和stdout流一起使用。
我的可执行文件的输出是将一些压缩数据写入stdout流。
int fd = fileno(stdout);
_setmode(fd, O_BINARY);
n = write(fd, buffer, nbytes);
但是当我重定向那些写入stdout流的数据到文件时(使用 my_exe get_data> File.txt ),文件中的数据长度将是与原始数据不匹配。如果我有100个字符数据,那么在文件中,我看到106个字符数据。我认为一些换行符或回车符会被添加到文件中。我已将stdout设置为二进制流。但在重新定向到文件时,同样的事情正在发生。有没有办法解决这个问题。
答案 0 :(得分:1)
您正在使用_setmode
MS Visual C ++函数替换不推荐使用的setmode
。但您使用的是已弃用的fileno
和write
。
请使用_fileno
和_write
。