从stdout写入文件

时间:2015-09-09 16:53:21

标签: c file newline msvcrt

我正在创建一个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设置为二进制流。但在重新定向到文件时,同样的事情正在发生。有没有办法解决这个问题。

1 个答案:

答案 0 :(得分:1)

您正在使用_setmode MS Visual C ++函数替换不推荐使用的setmode。但您使用的是已弃用的filenowrite

请使用_fileno_write